Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten aus anderem Workbook kopieren

Daten aus anderem Workbook kopieren
30.01.2020 17:24:44
Sonja
Hallo zusammen,
ich habe kaum Ahnung von VBA, konnte mir aber bisher einiges zusammen klauen.
Ich möchte folgendes Marko umschreiben.
Statt von einem Tabellenblatt zum anderen (von 2 zu 1), soll aus einer anderen Datei zu Tabelle 1 kopiert werden.
Kann mir jemand mein Makro entsprechend ergänzen .....PLEEEAASE :D
Sub test()
Dim wks1 As Worksheet
Dim lngLetzte As Long
Set wks1 = Sheets("Tabelle1")
wks1.UsedRange.Offset(rowOffset:=1, columnOffset:=1).ClearContents
With Sheets("Tabelle2")
lngLetzte = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
.Range(.Cells(2, "A"), .Cells(lngLetzte, "C")).Copy wks1.Cells(2, 2)
End With
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus anderem Workbook kopieren
30.01.2020 17:46:58
Hajo_Zi
With Workbooks "MeineDateui.xlsm").Sheets("Tabelle2")
die Datei ist ja auf.

AW: Daten aus anderem Workbook kopieren
30.01.2020 18:36:11
Regina
Hi,
probier mal so:
Sub test()
Dim wks1 As Worksheet
Dim lngLetzte As Long
Dim obj_wkb_quelle As Workbook
' Quelldatei ist schon offen:
Set obj_wkb_quelle = Workbooks("DeineQuelldatei.xlsx")
' oder, wenn Datei noch geöffnet werden muss:
' Set obj_wkb_quelle = worksbooks.Open("C:\DeineQuellDatei.xlsx")
Set wks1 = ThisWorkbook.Worksheets("Tabelle1")  ' Tabellenblatt in das kopiert werden soll
wks1.UsedRange.Offset(rowOffset:=1, columnOffset:=1).ClearContents
With obj_wkb_quelle.Worksheets("Tabelle1")   ' Tabellenblatt aus dem die Daten kommen
lngLetzte = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
.Range(.Cells(2, "A"), .Cells(lngLetzte, "C")).Copy wks1.Cells(2, 2)
End With
End Sub
Eventuell musst Du die Blattnamen noch anpassen. In meinem Code hießne beide Blätter Tabelle1. Außerdem kannst Du wählen, ob die Datei, aus der die Daten kommen, noch geöffnet werden soll.
Mangels Beispieldatei ist das ungetestet. Falls das nicht läuft, bitt mal beide Dateien hochladen.
gruß
Regina
Anzeige
AW: Daten aus anderem Workbook kopieren
31.01.2020 09:50:53
Sonja
Vielen Dank an euch beide....
wenn die Datei bereits offen ist funktioniert es einwandfrei...
Aber wenn die Datei erst geöffnet werden soll, kommt der Fehler "Objekt erforderlich".
Kann es sein, dass auf Netzwerkordner nicht zugegriffen werden kann?
"\\emea.corpdir.net\E080_Home\B\SMUELLE\Data\My Documents\5_Hannover\Akquise\Copytest.xslx" ist in meinem Fall der Pfad zur Datei.
Anzeige
AW: Daten aus anderem Workbook kopieren
01.02.2020 09:57:11
Oberschlumpf
Hi Sonja,
Zitat:
wenn die Datei bereits offen ist funktioniert es einwandfrei...
Aber wenn die Datei erst geöffnet werden soll, kommt der Fehler "Objekt erforderlich".

Du hast den Fehler ja schon erkannt (siehst ihn nur nicht :-) )
Genau, bevor mit With... auf eine Datei, bzw Tabelle, Bereich, etc zugegriffen werden kann, muss die Datei erst mal geöffnet sein.
Angelehnt an HaJo's Idee versuch es mal so:
(ungetestet, weil ich deine Dateien nicht habe)

Sub test()
Dim wks1 As Worksheet
Dim lngLetzte As Long
Set wks1 = Sheets("Tabelle1")
wks1.UsedRange.Offset(rowOffset:=1, columnOffset:=1).ClearContents
Workbooks.Open "\\emea.corpdir.net\E080_Home\B\SMUELLE\Data\My Documents\5_Hannover\Akquise\ _
Copytest.xslx"
With Workbooks("Copytest.xslx").Sheets("Tabelle2")
lngLetzte = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
.Range(.Cells(2, "A"), .Cells(lngLetzte, "C")).Copy wks1.Cells(2, 2)
End With
End Sub

(hier im Code angezeigte Zeilenumbrüche entfernen; diese werden durch die Forumssoftware (leider) erzeugt)
Sollte der Code mit With... nach der Workbooks.Open-Zeile zu schnell weitermachen (Datei öffnen ist noch nicht abgeschlossen), dann bau eine "Zwangswartepause" ein, bevor der With... - Befehl ausgeführt wird.
Hilfts?
Ciao
Thorsten
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Daten aus anderem Workbook kopieren


Schritt-für-Schritt-Anleitung

Um Daten aus einem anderen Workbook in Excel zu kopieren, kannst du das folgende VBA-Makro verwenden. Es gibt zwei Szenarien: Wenn die Quelldatei bereits geöffnet ist oder wenn sie geöffnet werden muss.

  1. Öffne den Visual Basic for Applications (VBA) Editor: Drücke ALT + F11.
  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Sub test()
    Dim wks1 As Worksheet
    Dim lngLetzte As Long
    Dim obj_wkb_quelle As Workbook

    ' Quelldatei ist schon offen:
    Set obj_wkb_quelle = Workbooks("DeineQuelldatei.xlsx")
    ' oder, wenn die Datei noch geöffnet werden muss:
    ' Set obj_wkb_quelle = Workbooks.Open("C:\DeineQuellDatei.xlsx")

    Set wks1 = ThisWorkbook.Worksheets("Tabelle1")  ' Ziel-Tabelle
    wks1.UsedRange.Offset(rowOffset:=1, columnOffset:=1).ClearContents

    With obj_wkb_quelle.Worksheets("Tabelle1")   ' Quell-Tabelle
        lngLetzte = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
        .Range(.Cells(2, "A"), .Cells(lngLetzte, "C")).Copy wks1.Cells(2, 2)
    End With
End Sub
  1. Passe die Blattnamen und Pfade an: Stelle sicher, dass die Blattnamen und der Pfad zur Quelldatei korrekt sind.

  2. Führe das Makro aus: Klicke auf Ausführen oder drücke F5.


Häufige Fehler und Lösungen

  • "Objekt erforderlich" Fehler: Dieser Fehler tritt auf, wenn du versuchst, auf ein nicht geöffnetes Workbook zuzugreifen. Stelle sicher, dass die Datei tatsächlich geöffnet ist, bevor du darauf zugreifst.

  • Zugriffsprobleme bei Netzwerkordnern: Wenn du versuchst, eine Datei von einem Netzwerkordner zu öffnen, stelle sicher, dass du die richtigen Berechtigungen hast und dass der Pfad korrekt ist. Verwende doppelte Backslashes (\\) für Netzwerkpfade.


Alternative Methoden

Eine alternative Methode ist die Verwendung von Excel-Formeln, um Daten zu importieren, ohne VBA zu benutzen. Die Funktion =IMPORTRANGE() kann in Google Sheets verwendet werden, jedoch nicht in Excel. In Excel kannst du statische Daten über "Daten abrufen" und "Von anderen Quellen" importieren.


Praktische Beispiele

Ein Beispiel für das Öffnen einer Datei und das Kopieren von Daten könnte so aussehen:

Sub test()
    Dim wks1 As Worksheet
    Dim lngLetzte As Long

    Set wks1 = ThisWorkbook.Worksheets("Tabelle1")
    wks1.UsedRange.Offset(rowOffset:=1, columnOffset:=1).ClearContents

    Workbooks.Open "\\emea.corpdir.net\E080_Home\B\SMUELLE\Data\My Documents\5_Hannover\Akquise\Copytest.xlsx"

    With Workbooks("Copytest.xlsx").Sheets("Tabelle2")
        lngLetzte = .Cells(.Cells.Rows.Count, "A").End(xlUp).Row
        .Range(.Cells(2, "A"), .Cells(lngLetzte, "C")).Copy wks1.Cells(2, 2)
    End With
End Sub

Tipps für Profis

  • Debugging: Verwende Debug.Print, um Variablenwerte während der Ausführung zu überprüfen. Das hilft, Fehler schnell zu identifizieren.

  • Zwangswartepause: Wenn du eine Datei öffnest und es scheint, dass das Makro zu schnell weiterläuft, könntest du Application.Wait verwenden, um eine kurze Pause einzufügen.

Application.Wait (Now + TimeValue("0:00:01"))

FAQ: Häufige Fragen

1. Frage
Wie kann ich Daten aus einer geschlossenen Datei kopieren?
Antwort: Du kannst die Workbooks.Open Methode verwenden, um die Datei zu öffnen und dann die Daten zu kopieren.

2. Frage
Was mache ich, wenn mein Makro nicht funktioniert?
Antwort: Überprüfe zuerst den Pfad zur Quelldatei und stelle sicher, dass alle Blattnamen korrekt sind. Verwende die Debugging-Tools von VBA, um den Fehler zu finden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige