Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
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
Spalteninhalt einfügen
29.04.2013 14:15:34
Peter
Hallo Experten
Ich habe eine Spalte X mit Inhalten in einer Datei. Den Inhalt der Spalte X würde ich gerne mittels Makro in alle Dateien schreiben, welche in einem bestimmten Verzeichnis stehen.
Die Tabellen im Verzeichnis sind alle gleich aufgebaut. Das Makro müsste die Werte aus der Spalte X in den Zwischenspeicher nehmen und dann die erste Datei aus dem Verzeichnis öffnen, dann die Daten in die Spalte V einfügen, die Datei schliessen usw. bis alle Dateien im Verzeichnis abgearbeitet sind.
Gibt es dafür ev. eine Lösung?
Danke für Eure Hilfe.
Lieber Gruss
Peter

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

Betreff
Datum
Anwender
Anzeige
AW: Spalteninhalt einfügen
29.04.2013 15:47:27
Peter
Hallo zusammen
Konnte mir mittlerweile selber helfen:
Sub Makro3()
Dim strPath As String
Dim strExt As String
Range("A1:A2887").Select
Selection.Copy
strPath = "C:\Temp\Test\"
strExt = "*.xlsm"
Dim strFile As String
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Workbooks.Open Filename:=strPath & strFile
Sheets("Test").Select
Range("T1").Select
ActiveSheet.Paste
Workbooks(strFile).Close
strFile = Dir()
Loop
End If
End Sub
Danke trotzdem.
Lieber Gruss
Peter

AW: Spalteninhalt einfügen
29.04.2013 17:08:29
Peter
Hallo zusammen
Habe mich zu früh gefreut. Bei folgendem Code erhalte ich immer den Laufzeitfehler 1004 Anwendungs -oder objektdefinierter Fehler. Eher ein allg. Fehler. Woran könnte dies liegen?
Sub Makro3()
Dim strPath As String
Dim strExt As String
Dim strFile As String
Range("B1:B933").Select
Selection.Copy
strPath = "C:\Temp\Test\" 'Pfad des Verzeichnisses ggf. anpassen
strExt = "*.xlsm"       'Dateiextension ggf. anpassen
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Workbooks.Open Filename:=strPath & strFile
Sheets("Data").Select
Range("BS6").Select
ActiveSheet.Paste
Workbooks(strFile).Close
strFile = Dir() ' nächste Datei
Loop
End If
End Sub
Vielen Dank für Eure Hilfe.
Gruss
Peter

Anzeige
AW: Spalteninhalt in Dateien einfügen per VBA
29.04.2013 18:44:19
Peter
Hallo zusammen
Hat jemand eine Idee?
Bin für jede Hilfe dankbar.
Lieber Gruss
Peter

AW: Spalteninhalt in Dateien einfügen per VBA
29.04.2013 19:46:51
Jürgen
Hallo Peter,
leider sagst Du nicht, in welcher Zeile des Codes der Fehler erscheint. So bleibt nur das Raten - mein erster Versuch: die Datei mit dem Makro ist in dem gleichen Pfad wie die zu ändernden Dateien oder eine gleichnamige befindet sich darunter. Aber es gibt noch genug andere mögliche Gründe (z. B. Blattschutz beim Ziel, die Zieldateien haben gar kein Blatt "data" etc.)
Ich habe Dein Makro mit ein paar Testdateien durchgespielt, aber ohne irgendein Problem.
Noch ein Tipp: mit Workbooks(strFile).Close True sparst Du Dir, das Schließen / Speichern jeder Datei zu bestätigen. Das könnte dann, mit noch ein paar Veränderungen, die sich günstig auf die Ausführungsgeschwindigkeit auswirken sollten (wie z.B. der Verzicht auf .select), ungefähr so aussehen:
Sub Makro3b()
Dim strPath As String
Dim strExt As String
Dim strFile As String
Dim Zieldatei As Workbook
strPath = "C:\Temp\Test\" 'Pfad des Verzeichnisses ggf. anpassen
strExt = "*.xlsm"       'Dateiextension ggf. anpassen
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Set Zieldatei = Workbooks.Open(Filename:=strPath & strFile)
ThisWorkbook.Sheets(1).Range("B1:B933").Copy Zieldatei.Sheets("Data").Range("BS6")
Zieldatei.Close True
strFile = Dir() ' nächste Datei
Loop
End If
End Sub
Das wird aber Dein Problem wahrscheinlich nicht lösen. Und vor dem Ausprobieren von meinem Code musst Du prüfen, ob meine Annahme, dass die zu kopierenden Daten auf dem ersten Blatt Deiner Makro-Datei stehen, zutrifft und ggfs. die Zahl in ThisWorkbook.Sheets(1) korrigieren.
Gruß, Jürgen

Anzeige
AW: Spalteninhalt in Dateien einfügen per VBA
29.04.2013 20:30:52
Peter
Hallo Jürgen
Vielen Dank für Deine ausführliche Hilfe. Mit der Fehlersuche bin ich noch nicht so routiniert, daher konnte ich die Code-Zeile nicht mitteilen.
Deine Annahme trifft zu. Die zu kopierenden Daten befinden sich auf dem ersten Sheet meiner Makrodatei. Eine Anpassung Deines Codes ist also nicht notwendig.
Ich werde Deine Lösung morgen im Geschäft ausprobieren, da ich Zuhause noch keine Excel 2007er Version habe.
Ich wünsche Dir einen schönen Abend und werde morgen eine Rückmeldung geben.
Lieber Gruss
Peter

AW: Spalteninhalt in Dateien einfügen per VBA
30.04.2013 08:27:08
Peter
Hallo Jürgen
Ich habe es nun ausprobiert. Jetzt kommt immer die Fehlermeldung Laufzeitfehler 438 Objekt unterstützt diese Eigenschaft oder Methode nicht. Ich habe auch eine leere Datei als Testobjekt genommen. Da kommt die gleiche Fehlermeldung.
Hast Du noch eine Idee?
Vielen Dank.
Gruss
Peter

Anzeige
AW: Spalteninhalt in Dateien einfügen per VBA
30.04.2013 11:06:55
Peter
Hallo zusammen
Leider kommt es auch mit dem angepassten Code von Jürgen zur einer Fehlermeldung Laufzeitfehler 438 Objekt unterstützt diese Eigenschaft oder Methode nicht. Hier poste ich nochmals den Code:
Sub Makro3b()
Dim strPath As String
Dim strExt As String
Dim strFile As String
Dim Zieldatei As Workbook
strPath = "C:\Temp\Test\" 'Pfad des Verzeichnisses ggf. anpassen
strExt = "*.xlsm"       'Dateiextension ggf. anpassen
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Set Zieldatei = Workbooks.Open(Filename:=strPath & strFile)
ThisWorkbook.Sheets(1).Range("B1:B933").Copy
Zieldatei.Sheets("Data").Range("BS6")
Zieldatei.Close True
strFile = Dir() ' nächste Datei
Loop
End If
End Sub
Wenn ich das Ganze zu Testzwecken primitiv und ohne Schleife mit fest angegebenen Parametern mache, dann funktioniert alles problemlos und die Werte werden in der entsprechenden Datei eingefügt. Hier sende ich Euch dazu den Code:
Range("B1:B933").Select
Selection.Copy
ChDir "C:\Temp\Test"
Workbooks.Open Filename:="C:\Temp\Test\Mappe1.xlsx"
Sheets("Data").Select
Range("BS6").Select
ActiveSheet.Paste
Gibt es eine Möglichkeit diesen Code in eine Schleife zu verpacken, so dass alle Dateien in einem bestimmten Verzeichnis abgearbeitet werden können?
Danke für Eure Hilfe.
Lieber Gruss
Peter

Anzeige
AW: Spalteninhalt in Dateien einfügen per VBA
30.04.2013 11:08:23
Peter
Hab vergessen den Beitrag als noch offen zu deklarieren!

Dringend: Spalteninhalt in Dateien einfügen VBA
30.04.2013 13:30:41
Peter
Hallo zusammen
Hat hier jemand eine Idee?
Danke.
Gruss
Peter

WO ist der Fehler?
30.04.2013 14:59:47
EtoPHG
Peter,
Wenn ein Fehler im Code auftritt und du auf [Debuggen] klickst, dann wird dir im VBA die fehlerhafte Codezeile gelb markiert. Teile diese doch bitt in Zukunft mit. Das erleichert die Hilfestellung.
Wie ist sichergestellt, dass in allen Dateien die geöffnet wird, wirklich ein Tabellenblatt mit dem Registernamen "Data" existiert? Sollte dies nämlich nicht der Fall sein, fliegt das Ding auf die Schnauze!
Gruess Hansueli

Anzeige
AW: Spalteninhalt in Dateien einfügen per VBA
30.04.2013 15:23:11
fcs
Hallo Peter,
du hast einne Syntaxfehler für die Kopieranweisung eingebaut. Die 2 Zeilen gehören zusammen, damit Copy weiss, wo die daten hinkoiert werden sollen.
Korrigiere:
     ThisWorkbook.Sheets(1).Range("B1:B933").Copy  Zieldatei.Sheets("Data").Range("BS6")

Ich schlage folgende Version vor, die etwas schneller und ruhiger abläuft.
Gruß
Franz
Sub Makro3b()
Dim strPath As String
Dim strExt As String
Dim strFile As String
Dim Zieldatei As Workbook
Dim rngQuelle As Range
strPath = "C:\Temp\Test\" 'Pfad des Verzeichnisses ggf. anpassen
strPath = "D:\Test\" 'Pfad des Verzeichnisses ggf. anpassen
strExt = "*.xlsm"       'Dateiextension ggf. anpassen
If strPath = "" Then
Exit Sub
Else
Set rngQuelle = ActiveWorkbook.Sheets(1).Range("B1:B933")
strFile = Dir(strPath & strExt)
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Do While Len(strFile) > 0
Set Zieldatei = Workbooks.Open(Filename:=strPath & strFile)
rngQuelle.Copy Destination:=Zieldatei.Sheets("Data").Range("BS6")
Application.CutCopyMode = False
Zieldatei.Close savechanges:=True
strFile = Dir() ' nächste Datei
Loop
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End If
End Sub

Anzeige
AW: Spalteninhalt in Dateien einfügen per VBA
30.04.2013 16:59:23
Peter
Hallo Franz
Du bist ein Genie. Es hat endlich funktioniert.
Ich danke Dir und allen, die sich meinem Problem angenommen haben.
Lieber Gruss
Peter

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige