Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Probleme mit Excel VBA - Kopieren von Bereichen bzw. Arbeitsblatt

Frage Entwicklung VB for Applications

Mitglied: killtec

killtec (Level 3) - Jetzt verbinden

13.11.2014, aktualisiert 17.11.2014, 1388 Aufrufe, 3 Kommentare

Hallo zusammen,
ich möchte gern aus einer Excel-Datei werte aus einer Tabelle kopieren in ein anderes Excel File kopieren.
Dazu würde ich erst die "Tabelle1" aus der Quelldatei in die Zieldatei kopieren. Anschließend meine Werte von der Tabelle in eine andere.
Das Problem was ich habe ist, dass ich permanent einen Fehler bekomme, dass der Index außerhalb des Gültigen Bereichs sei.

Hier mal mein Code:
01.
Sub Daten() 
02.
    quelle = Application.GetOpenFilename() 
03.
    If quelle = False Then GoTo Mark1 
04.
    ziel = Application.GetOpenFilename() 
05.
    If ziel = False Then GoTo Mark2 
06.
    Workbooks.Open quelle 
07.
    Workbooks.Open ziel 
08.
     
09.
    cnt = ActiveWorkbook.Sheets.Count 
10.
    ActiveWorkbook.Sheets("Tabelle1").Copy after:=Workbooks(ziel).Sheets(cnt) 
11.
     
12.
    'Workbooks(quelle).Sheets("Tabelle1").Copy after:=Workbooks(ziel).Sheets(cnt) 
13.
    'Workbooks.Open (ziel) 
14.
     
15.
     
16.
    msgbox "Daten wurden übernommen.", vbokonly 
17.
    GoTo Ende 
18.
     
19.
Mark1: 
20.
    MsgBox "Es wurde keine Quelldatei ausgewählt.", vbOKOnly 
21.
    GoTo Ende 
22.
     
23.
Mark2: 
24.
    MsgBox "Es wurde keine Zieldatei ausgewählt.", vbOKOnly 
25.
 
26.
 
27.
Ende: 
28.
     
29.
End Sub
Die Kopierte Tabelle soll dann zum Schluss wieder gelöscht werden.

Gruß
Mitglied: colinardo
LÖSUNG 13.11.2014, aktualisiert 17.11.2014
Hi killtec,
du solltest beim öffnen mehrerer Workbooks am besten die Referenzen der Workbooks Variablen zuweisen und diese für den Zugriff benutzen.
01.
Sub Daten() 
02.
    Dim wbQuelle As Workbook, wbZiel As Workbook, strPathQuelle, strPathZiel 
03.
 
04.
    'Dateinamen anfordern 
05.
    strPathQuelle = Application.GetOpenFilename() 
06.
    strPathZiel = Application.GetOpenFilename() 
07.
     
08.
    If strPathQuelle = False Then 
09.
        MsgBox "Es wurde keine Quelldatei ausgewählt.", vbOKOnly 
10.
        Exit Sub 
11.
    End If 
12.
    If strPathZiel = False Then 
13.
        MsgBox "Es wurde keine Quelldatei ausgewählt.", vbOKOnly 
14.
        Exit Sub 
15.
    End If 
16.
 
17.
    Application.ScreenUpdating = False 
18.
 
19.
    'Workbooks öffnen 
20.
    Set wbQuelle = Workbooks.Open(strPathQuelle) 
21.
    Set wbZiel = Workbooks.Open(strPathZiel) 
22.
     
23.
    'Sheet kopieren 
24.
    wbQuelle.Worksheets("Tabelle1").Copy After:=wbZiel.Worksheets(wbZiel.Worksheets.Count) 
25.
     
26.
    'Quell-Workbook schließen (nicht speichern) 
27.
    wbQuelle.Close False 
28.
    'Ziel-Workbook schließen und speichern 
29.
    wbZiel.Close True 
30.
     
31.
    'Quell-Workbook löschen 
32.
    Kill (strPathQuelle) 
33.
     
34.
    Application.ScreenUpdating = True 
35.
    MsgBox "Daten wurden übernommen.", vbOKOnly 
36.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: killtec
14.11.2014 um 13:45 Uhr
Danke Uwe,
Auf dich ist Verlass Ich habe den code noch ein wenig angepasst. Poste nachher mal das Ergebnis wenn ich alles habe.
Schönes Wochenende.

Gruß
Bitte warten ..
Mitglied: killtec
17.11.2014 um 11:15 Uhr
Hi Uwe,
hier mein Code:
01.
Sub Daten() 
02.
  MsgBox "Bitte zuerst die Quelle und anschließend das Ziel auswählen.", vbOKOnly 
03.
     
04.
    strQuelle = Application.GetOpenFilename() 
05.
    If strQuelle = False Then 
06.
        MsgBox "Es wurde keine Quelldatei ausgewählt.", vbOKOnly 
07.
        Exit Sub 
08.
    End If 
09.
     
10.
   strZiel = Application.GetOpenFilename() 
11.
   If strZiel = False Then 
12.
       MsgBox "Es wurde keine Zieldatei ausgewählt.", vbOKOnly 
13.
       Exit Sub 
14.
   End If 
15.
     
16.
'Aktualisierung abschalten 
17.
    Application.ScreenUpdating = False 
18.
     
19.
'Setzen der Quelle und Ziel in eine Variable 
20.
    Set quelle = Workbooks.Open(strQuelle) 
21.
    Set ziel = Workbooks.Open(strZiel) 
22.
     
23.
'Qulle prüfen. Als Referenz wird der Begriff "Refwert" in Zelle A26 genommen. 
24.
 
25.
    refval = quelle.Worksheets("Tabelle1").Range("A26").Value 
26.
    If refval <> "Refwert" Then 
27.
     
28.
        MsgBox "Die Quelldatei entspricht nicht dem korrektem Datenmuster. Bitte prüfen Sie Die Quelldatei.", vbOKOnly + vbCritical 
29.
        Exit Sub 
30.
     
31.
    End If 
32.
     
33.
'Kopieren der Tabelle "Tabelle1" 
34.
    quelle.Worksheets("Tabelle1").Copy After:=ziel.Worksheets(ziel.Worksheets.Count) 
35.
    quelle.Close False 
36.
     
37.
 
38.
     
39.
'T_Table1 
40.
    StrSheet = "T_Table1" 
41.
    ziel.Sheets("Tabelle1").Range("B26:D36,B38:D43").Select 
42.
    Application.CutCopyMode = False 
43.
    Selection.Copy 
44.
    ziel.Sheets(StrSheet).Select 
45.
    Range("C3").Select 
46.
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
47.
        :=False, Transpose:=False 
48.
     
49.
             
50.
 
51.
'T_Table2 
52.
    StrSheet = "T_Table2" 
53.
    ziel.Sheets("Tabelle1").Activate 
54.
    ziel.Sheets("Tabelle1").Range("B49:D59,B61:D66").Select 
55.
    Application.CutCopyMode = False 
56.
    Selection.Copy 
57.
    ziel.Sheets(StrSheet).Select 
58.
    Range("C3").Select 
59.
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
60.
        :=False, Transpose:=False 
61.
     
62.
   
63.
 
64.
'T_Table3 
65.
    StrSheet = "T_Table3" 
66.
    ziel.Sheets("Tabelle1").Activate 
67.
    ziel.Sheets("Tabelle1").Range("B73:D80").Select 
68.
    Application.CutCopyMode = False 
69.
    Selection.Copy 
70.
    ziel.Sheets(StrSheet).Select 
71.
    Range("C3").Select 
72.
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
73.
        :=False, Transpose:=False 
74.
 
75.
 
76.
     
77.
'T_Table4 
78.
    StrSheet = "T_Table4" 
79.
    ziel.Sheets("Tabelle1").Activate 
80.
    ziel.Sheets("Tabelle1").Range("B9:D9,F9:G9,B11:D11,F11:G11,B13:D13,F13:G13,B15:D15,F15:G15,B17:D17,F17:G17,B19:D19,F19:G19").Select 
81.
    Application.CutCopyMode = False 
82.
    Selection.Copy 
83.
    ziel.Sheets(StrSheet).Select 
84.
    Range("C4").Select 
85.
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
86.
        :=False, Transpose:=False 
87.
     
88.
     
89.
'Löschen des Arbeitsblattes 
90.
    Application.DisplayAlerts = False 
91.
    ziel.Sheets("Tabelle1").Delete 
92.
    Application.DisplayAlerts = True 
93.
     
94.
     
95.
    MsgBox "Daten wurden übernommen.", vbOKOnly 
96.
    
97.
     
98.
End Sub
Jetzt muss ich nur noch ein bisschen Bedingte Formatierung einbauen.

Gruß
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel VBA Tabelleblätter kopieren und Umbenennnen (8)

Frage von Florian86 zum Thema Microsoft Office ...

Microsoft Office
Unterordner durchsuchen Excel VBA (1)

Frage von schwalbepilot zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel VBA: Automatische Konvertierung von Textdatei (.txt) zu Exceldatei (.xlsx) (7)

Frage von Booster07 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(2)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (16)

Frage von SarekHL zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Cloud-Dienste
gelöst Bitcoins minen über Nacht? (16)

Frage von 1410640014 zum Thema Cloud-Dienste ...