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, 1334 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 ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Microsoft Office
Excel VBA: Tranferieren von Werten aus Quelldatei in die Masterdatei mit SVERWEIS (3)

Frage von peter.schroeder zum Thema Microsoft Office ...

Microsoft Office
EXCEL VBA Termindaten aus Tabelle Filtern

Frage von t3jxbus zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...