Hallo Excelolaner und Excelolanerinnen,
ich habe wieder mal ein kleines Problem, das sich zum größeren entwickelt und brauche deshalb eure Hilfe.
Es geht um ein Makro, welches in einem Verzeichnis nach Dateien mit der Endung ".xlsm" suchen, diese der Reihe nach öffnen und den Bereich "P16:P683" kopieren soll.
Anschließend soll der kopierte Bereich in meinem Makrodokument in Spalte B2, C2, D2, usw. eingefügt werden. Und zwar mit Werten, nicht mit Formaten! Und genau das funktioniert nicht.
HIer der bisherige Code:
Ich habe schon etliche Kombinationen zur PasteSpecial-Zeile ausprobiert, gestern ging es auch einmal, danach ist Excel allerdings abgeschmiert und danach ging es nicht mehr
Bin am Verzweifeln, das kann doch nicht so schwer sein. Ach ja, mit .Value anstatt .Copy bleiben die zu befüllenden Zellen übrigens leer.
Bitte um eure Hilfe!
Gruß
IrishStu
ich habe wieder mal ein kleines Problem, das sich zum größeren entwickelt und brauche deshalb eure Hilfe.
Es geht um ein Makro, welches in einem Verzeichnis nach Dateien mit der Endung ".xlsm" suchen, diese der Reihe nach öffnen und den Bereich "P16:P683" kopieren soll.
Anschließend soll der kopierte Bereich in meinem Makrodokument in Spalte B2, C2, D2, usw. eingefügt werden. Und zwar mit Werten, nicht mit Formaten! Und genau das funktioniert nicht.
HIer der bisherige Code:
VB.NET-Quellcode
- Sub Daten_kopieren()
- Dim Pfad As String, Dateiname As String, iCol As Long
- Application.ScreenUpdating = False
- Pfad = "U:\Projekte\Erstverladungen\"
- Dateiname = Dir(Pfad & "*.xlsm")
- Do While Dateiname <> "" 'solange du in meinem Ordner noch Dokumente mit der Endung xlsm findest, mach Folgendes....
- Workbooks.Open Filename:=Pfad & Dateiname 'öffne die Datei im Folgenden Pfad
- ActiveWorkbook.Unprotect Password:="sepp" 'Die Dateien sind mit einem Passwort geschützt, Blattschutz usw. wird hier entfernt
- ActiveSheet.Unprotect Password:="sepp"
- iCol = ThisWorkbook.Sheets("Tabelle1").Range("XFD2").End(xlToLeft).Offset(0, 1).Column 'ich möchte, dass er die letzte Spalte des Tabellenblattes nimmt und dann in Zeile 2 so lange nach links geht, bis er eine gefüllte Zelle findet und dann 1 rechts neben diese 'gefüllte Zelle springt, denn da soll er den kopierten Bereich dann ja per Schleife immer wieder einfügen
- Workbooks(Dateiname).Sheets("Verladeliste-Rohbau").Range("P16:P683").Copy 'hier wird der gewünschte Bereich kopiert
- ThisWorkbook.Sheets("Tabelle1").Cells(2, iCol).PasteSpecial Paste:=xlPasteValues 'An dieser Stelle funktioniert nichts mehr, denn er bricht immer wieder mit Laufzeitfehler 1004 ab, warum?! Er soll hier den kopierten Bereich in mein Ausgangsdokument einfügen, 'und zwar in Zeile 2 und in der Spalte, die sich 1 rechts neben der letzten befüllten befindet
- Application.DisplayAlerts = False 'etwaige Dialogfenster sollen geschlossen werden
- Workbooks(Dateiname).Close SaveChanges:=False 'auch möchte ich die Änderungen in den der Reihe nach zu öffnenden Dokumenten (für den Kopiervorgang) nicht speichern, frag mich also nicht und nerv nicht weiter
- Dateiname = Dir()
- Loop
- Application.DisplayAlerts = True 'nach dem Ende der Schleife dürfen Dialogfenster wieder angezeigt werden
- End Sub
Ich habe schon etliche Kombinationen zur PasteSpecial-Zeile ausprobiert, gestern ging es auch einmal, danach ist Excel allerdings abgeschmiert und danach ging es nicht mehr
Bin am Verzweifeln, das kann doch nicht so schwer sein. Ach ja, mit .Value anstatt .Copy bleiben die zu befüllenden Zellen übrigens leer.
Bitte um eure Hilfe!
Gruß
IrishStu