Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

2 Dateien kopieren VBA

2 Dateien kopieren VBA
10.09.2023 18:41:27
Pitt
Hallo,

habe immer noch Ärger mit dem Code.
Erläuft nicht durch.
Irgendwo ist ein Fehler drin.

Er soll mir 2 Dateien in Mappeversuch1 in das Tab Depotbestand kopieren.
Wenn welche drin sind soll er sie mit 2 Zellen Abstand daunter kopiern.
Hier bleibt er hängen.
Userbild

Das gibt er als Fehlermeldung
Userbild

Vielleicht kann mir einer da Helfen.
Danke


Sub KopiereUndAnhaengen()
Dim Quelle1 As Workbook
Dim Quelle2 As Workbook
Dim Ziel As Workbook
Dim Tabelle1 As ListObject
Dim Tabelle2 As ListObject
Dim ZielTabelle As Worksheet
Dim NächsteFreieZeile As Long

' Öffnen Sie die Quell-Arbeitsmappen
Set Quelle1 = Workbooks.Open("C:\Users\pittb\Downloads\Depotbestand\Mappeversuch2.xlsm")
Set Quelle2 = Workbooks.Open("C:\Users\pittb\Downloads\Depotbestand\Mappeversuch3.xlsm")

' Definieren Sie die Intelligenten Tabellen in den Quell-Arbeitsmappen
Set Tabelle1 = Quelle1.Worksheets("Depotbestand").ListObjects("Depotbestand")
Set Tabelle2 = Quelle2.Worksheets("Depotbestand").ListObjects("Depotbestand")

' Öffnen Sie die Ziel-Arbeitsmappe (hier "Mappeversuch1.xlsm")

Set Ziel = Workbooks.Open("C:\Users\pittb\Downloads\Mappeversuch1.xlsm")
Set ZielTabelle = Ziel.Worksheets("Depotbestand")

' Bestimmen Sie die nächste freie Zeile in der Ziel-Tabelle
NächsteFreieZeile = ZielTabelle.Cells(ZielTabelle.Rows.Count, 1).End(xlUp).Row + 2

' Kopieren Sie die Daten aus Tabelle1 in die Ziel-Tabelle ab der nächsten freien Zeile
Tabelle1.DataBodyRange.Copy Destination:=ZielTabelle.Cells(NächsteFreieZeile, 1)

' Aktualisieren Sie die nächste freie Zeile
NächsteFreieZeile = ZielTabelle.Cells(ZielTabelle.Rows.Count, 1).End(xlUp).Row + 2

' Kopieren Sie die Daten aus Tabelle2 in die Ziel-Tabelle ab der nächsten freien Zeile
Tabelle2.DataBodyRange.Copy Destination:=ZielTabelle.Cells(NächsteFreieZeile, 1)

' Schließen Sie die Quell-Arbeitsmappen ohne Speichern
Quelle1.Close SaveChanges:=False
Quelle2.Close SaveChanges:=False

' Speichern Sie die Ziel-Arbeitsmappe (Mappeversuch1.xlsm)
Ziel.Save

' Meldung anzeigen, wenn die Aufgabe abgeschlossen ist
MsgBox "Daten wurden in das Tabellenblatt 'Depotbestand' mit einer freien Zeile zwischen den Daten kopiert."

' Schließen Sie die Ziel-Arbeitsmappe
Ziel.Close SaveChanges:=False
End Sub
Sub KopiereUndAnhaengen()

Gruß Pitt

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Dateien kopieren VBA
10.09.2023 18:51:38
GerdL
Hallo Pitt,

die Variablen Tabelle1 und Tabelle2 könnten Codenamen von Blättern in den Dateien sein.
Benenne sie mal um zB. in "lioTabelle1" ...
Ansonsten ist wahrscheinlich der Name des Blattes oder der Name des Listobjekts falsch geschrieben.

Gruß Gerd
AW: 2 Dateien kopieren VBA
13.09.2023 17:49:22
Piet
Hallo Pitt

bei deinen Beispieldateien war ich sehr überrascht das es KEINE Intelligente Tabelle als ListObjecte gibt!!
Dafür findest du im Namensmanager den Namen Klaus, Klaus1 mit #Ref, Fehler, und die Zelle E3 zeigt varHxxx statt E3 als Adresse!

Ich habe deinen Code so umgeschrieben das er bei mir einwandfrei läuft. Du musst aber meine Pfade wieder ändern!
Das Öffnen der Zieldatei habe ich rausgenommen, weil sie m.E. ja schon zur Makro Ausführung offen sein muss!
Bin gespannt wie deine Versuche ausfallen???

mfg Piet

  • Sub KopiereUndAnhaengen()
    Dim Quelle1 As Workbook
    Dim Quelle2 As Workbook
    Dim Ziel As Workbook
    Dim Tabelle1 As Object 'ListObject
    Dim Tabelle2 As Object 'ListObject
    Dim ZielTabelle As Worksheet
    Dim NächsteFreieZeile As Long
    Dim lzQ1 As Long, lzQ2 As Long

    ' Öffnen Sie die Quell-Arbeitsmappen
    ' Set Quelle1 = Workbooks.Open("C:\Users\pittb\Downloads\Depot\Versuch2.xlsm")
    ' Set Quelle2 = Workbooks.Open("C:\Users\pittb\Downloads\Depot\Versuch3.xlsm")

    Set Quelle1 = Workbooks.Open("H:\Forum Herber 2023\Pitt Depotbestand\162790 Versuch2.xls")
    Set Quelle2 = Workbooks.Open("H:\Forum Herber 2023\Pitt Depotbestand\162791 Versuch3.xls")

    ' Definieren Sie die Intelligenten Tabellen in den Quell-Arbeitsmappen
    Set Tabelle1 = Quelle1.Worksheets("Depotbestand")
    Set Tabelle2 = Quelle1.Worksheets("Depotbestand")

    ' Öffnen Sie die Ziel-Arbeitsmappe (hier "Mappeversuch1.xlsm")
    'Set Ziel = Workbooks.Open("C:\Users\pittb\Downloads\Mappeversuch1.xlsm")
    Set Ziel = ThisWorkbook
    Set ZielTabelle = ThisWorkbook.Worksheets("Depotbestand")

    'Bestimmen Sie die nächste freie Zeile in der Ziel-Tabelle
    NächsteFreieZeile = ZielTabelle.Cells(Rows.Count, 1).End(xlUp).Row + 2
    lzQ1 = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row 'LastZell Quelle1
    lzQ2 = Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row 'LastZell Quelle2

    ' Kopieren Sie die Daten aus Tabelle1 in die Ziel-Tabelle ab der nächsten freien Zeile
    Tabelle1.Range("A6:N" & lzQ1).Copy Destination:=ZielTabelle.Cells(NächsteFreieZeile, 1)

    ' Aktualisieren Sie die nächste freie Zeile
    NächsteFreieZeile = ZielTabelle.Cells(ZielTabelle.Rows.Count, 1).End(xlUp).Row + 2

    ' Kopieren Sie die Daten aus Tabelle2 in die Ziel-Tabelle ab der nächsten freien Zeile
    Tabelle2.Range("A6:N" & lzQ2).Copy Destination:=ZielTabelle.Cells(NächsteFreieZeile, 1)

    ' Schließen Sie die Quell-Arbeitsmappen ohne Speichern
    Quelle1.Close SaveChanges:=False
    Quelle2.Close SaveChanges:=False

    ' Speichern Sie die Ziel-Arbeitsmappe (Mappeversuch1.xlsm)
    Ziel.Save

    ' Meldung anzeigen, wenn die Aufgabe abgeschlossen ist
    MsgBox "Daten wurden in das Tabellenblatt 'Depotbestand' mit einer freien Zeile zwischen den Daten kopiert."

    ' Schließen Sie die Ziel-Arbeitsmappe
    Ziel.Close SaveChanges:=False
    End Sub
  • Anzeige
    AW: 2 Dateien kopieren VBA
    13.09.2023 19:31:14
    Pitt
    Moin Piet,

    das ist ja der Wahnsinn, toll, was Du da geschafft hast. Vielen Dank.

    Das mit den valHAuswahl , das ist immer wieder gekommen. Habe unter Namensmanager immer wieder weggemacht, aber.......
    Ich denke es kam bei mir durch das ganze kopieren, hin und her!???

    Ein kleines Problem ist da leider noch.
    Es handelt sich ja um 2Dateien die er reinschreiben soll, dass macht er nicht.
    Er nimmt immer nur die erste Datei, und die 2 mal.

    Ist mir am Anfang nicht aufgefallen, weil sie ja gleich aussehen.

    Gruß Pitt
    AW: 2 Dateien kopieren VBA
    14.09.2023 14:28:22
    Piet
    Hallo Pitt

    auch mir passieren dumme kleine Tippfehler! Siehe hier im Code:
    Set Tabelle2 = Quelle1.Worksheets("Depotbestand") - muss Quelle2 sein!!

    mfg Piet
    Anzeige
    AW: 2 Dateien kopieren VBA
    15.09.2023 09:50:27
    Pitt
    Moin Piet,

    Vielen Danke das Du nochmals Dir die Zeit genommen hast, um mir zu Helfen.

    Das mit der Quelle2 hätte ich auch sehen müssen.

    Leider geht es trotdem nicht.
    Er öffnet ja, wenn man mit F8 den Code bearbeitet, beide Dateien, sehr gut.
    Aber er kopiert nur die erste Datei rüber, und das 2x mal.
    Das war mein Fehler, weil beide Dateien, die gleiche Länge haben. Ich hatte sie nur einfach kopiert und einen anderen Namen gegeben.
    Wenn Du nun in der Beispielmappe Nr3 irgrndwas veränderst, Überschrift, Tabelle verlängerst usw. fällt es auf.

    Vielleicht hast Du noch mal die Geduld, um zu schauen ?

    Gruß Pitt
    Anzeige
    AW: 2 Dateien kopieren VBA
    15.09.2023 12:02:35
    Pitt
    Moin Piet,

    Entschuldige Bitte.

    Habe es nochmal kopiert von Hier, und nochmal geändert, Es lÄUFT Wahnsinn.
    Alles in Ordnung!

    Danke, Danke.

    Gruß Pitt
    AW: Danke, freut mich oWt
    15.09.2023 19:25:28
    Piet
    ...
    AW: 2 Dateien kopieren VBA
    10.09.2023 19:18:40
    Piet
    Hallo Pitt

    amüsnt, es kann verschiedene Ursachen haben. Versuche es bitte mal geschickt zu analysieren!
    Ersetze nur zum Testen in der 1. Set Anweisung das ListObject bitte mal durch einen Range Bereich! Range("A1:C3")
    Dahinter kannst du Exit Sub oder End setzen, und schauen ob der Laufzeitfehler dann weg ist??

    Seltsame Abhilfe: aus persönlicher Erfahrung
    ich hatte schon Excel Tabellen wo alles scheinbar übereinstimmte. Nur aus Jux kopierte ich dann den Namen aus dem Dialogfenster Eigenschaften in meinen Code, obwohl dort Tabelle1 drin stand! Man glaubt es kaum, in zwei Fällen lief der Code danach einwandfrei. Ich habe nie herausgefunden warum das so ist? Dann zuckt man die Schultern und sagt: "wie ist das möglich??"

    Diesen Code bitte ändern, er wird dir immer das Ende deiner Intelligenten Tabelle zeigen!
    NächsteFreieZeile = ZielTabelle.Cells(ZielTabelle.Rows.Count, 1).End(xlUp).Row + 2

    Ich programmiere es lieber so: - NächsteFreieZeile = ZielTabelle.Range("A1").End(xlDown).Row + 2
    IF ZielTabelle.Range("A2").Value = "" Then NächsteFreieZeile = 2 'LastZell Korrektur!

    mfg Piet
    Anzeige
    AW: 2 Dateien kopieren VBA
    11.09.2023 11:56:11
    Pitt
    Ahoi Piet,

    vielen Dank für Deine ausführliche Antwort.

    Den Code habe ich geändert "nächste freie Zeile"

    Das kopieren der Verzeichnisse u. Namen mache ich schon länger im Dialogfenster Eigenschaften, und dadurch weniger Fehlerhaft.

    Da ich nun ja kein VBA Profi bin, bekomme ich das mit der Range Bereich! Range("A1:C3") im ListObject nicht hin.

    Ohne Hilfe bin ich jetzt aufgeschmissen.

    Vielleicht magst Du noch mal reinschauen wenn es nicht zuviel verlangt ist.
    Danke
    Lade die Mappe einfach mal hoch.

    https://www.herber.de/bbs/user/162783.xlsm

    Gruß Pitt
    Anzeige
    AW: 2 Dateien kopieren VBA
    11.09.2023 20:48:12
    Piet
    Hallo Pitt

    evtl. benötige ich noch eine Beispieldatei Versuch2.xlsm zum Öffnen der Quelle. Vielleicht klappt es auch so.

    Ersetzte bitte mal die Dim Anweisung Tabelle1 as ListObject durch - Tabelle1 as Object
    Bei Dim NächsteFreieZeile As Long - ist ein unbekanntes Zeichen anstelle von "ä" in deinem Text
    Die nicht definierte Variable ist: - NächsteFreieZelle statt Zeile!

    Wenn du die Set Anweisung von GerdL auf lioTabelle1 änderst, musst du auch die Dim Anweisung auf lioTabelle1 ändern!
    Wenn du die Fehler behebst kommen wir vielleicht einen Schritt weiter.

    mfg Piet
    Anzeige
    AW: 2 Dateien kopieren VBA
    12.09.2023 11:09:28
    Pitt
    Ahoi Piet,

    Danke das Du so viel Geduld aufbringst.

    Leider klappt es so auch nicht. Der Fehler scheint immer gleich zusein.

    Lade die Dateien noch mal hoch.

    Habe so viel Versucht, andere Verzeichnisse genommen, die Blattnamen umgenannt, die Dateien andere Namen gegeben, alles 10 x kontrolliert, ab alles richtig geschrieben ist.
    Es bleibt immer das gleiche.

    Habe die 3 Dateien auf einen anderen PC mitgenommen, auch da der Fehler.
    Vielleich magst Du nochmal draufschauen.

    Danke

    https://www.herber.de/bbs/user/162789.xlsm
    https://www.herber.de/bbs/user/162790.xls
    https://www.herber.de/bbs/user/162791.xls

    Gruß
    Pitt
    Anzeige
    AW: 2 Dateien kopieren VBA
    11.09.2023 10:46:46
    Pitt
    Ahoi Gerd,

    Danke das Du Zeit gefunden hast zu antworten.

    habe das hier Versucht, hat aber nichts geändert.
    Userbild

    Dann habe ich "Option Explicit" oben reingeschrieben.
    Da stoppt er sofort, "Variable nicht defeniert"

    Der Name des Listobjekts habe ich schon gefühlte 100 x kontolliert, kann nichts feststellen.

    Die Quellen der 2 Dateien die ausgelesen werden sollen, kopiere ich jedesmal über Win10 in den Verzeichnissen und auf Eigenschaft.
    Habe schon die Namen verkürzt, manchmal überließt man ja was.

    Wird alles Kopiert.

    Ich bin Ratlos!

    Danke

    Gruß Pitt
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige