Top-Themen

Aktuelle Themen (A bis Z)

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, 1492 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
VB for Applications
VBA - Bereich von Excel nach Word kopieren
gelöst Frage von schwazza89VB for Applications6 Kommentare

Hallo zusammen, ich suche eine Möglichkeit einen Bereich aus Excel in eine Tabelle in Word zu kopieren. Meinen ersten ...

Microsoft Office
Excel Arbeitsblätter kopieren sich selbstständig
gelöst Frage von KMP1988Microsoft Office7 Kommentare

Servus, ich habe ein Problem mit Excel 2013. Ein Kunde hat bei sich am PC eine Excel-Datei mit mehreren ...

Microsoft Office
1:1 Kopie eines Excel Arbeitsblatt
gelöst Frage von YannoschMicrosoft Office18 Kommentare

Hallo liebe Community, ich habe vor im Excel eine 100% 1:1 Kopie eines einzelnen Excel-Arbeitsblattes zu erstellen. das kann ...

Microsoft Office
MAKRO EXCEL bestimmten Zahlen von einem Arbeitsblatt X in ein neues Arbeitsblatt Z kopieren
gelöst Frage von user2k14Microsoft Office8 Kommentare

hallo, ich möchte gerne ein Makro erstellen, welches mir ein bestimmtes Wort sucht, dieses Wort kommt immer vor in ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement16 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...