Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1276to1280
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

Bestimmte Zellen kopieren und in neue Datei kopier

Bestimmte Zellen kopieren und in neue Datei kopier
Tobias
Hallo,
folgende Aufgabe stellt sich mir:
Uns wurden Angebote (immer im gleichen Format und gleich aufgebaut, d.h. die Zellen sind immer identisch mit den Daten befüllt) übersandt. Diese befinden sich z.B. im Ordner: Desktop\angebote
Nun sollen diese Dateien nacheinander geöffnet werden und z.B. die Zellen A1, B2 kopiert und in die Datei datensammlung.xls in eine Zeile geschrieben werden. Nach Kopieren aller definierten Zelle soll das Makro die nächste Datei im Angebotsordner öffnen und die gleichen Zellen kopieren. Wobei die neuen Daten natürlich in dienächsten Zeile der Datensammlung.xls geschrieben werden sollen. Dies soll das Makro so lange tun, bis alle Dateien im Angebotsordner durchlaufen sind.
Mittels VBA-Rekorder konnte ich zwar erreichen, dass ich die Zellen kopieren lassen. Problem ist nur, dass ich beim Makroaufzeichnen die jeweiligen Dateien manuell immer erst einmal anklicken muss, damit er für die Folgezeit dann weiß, welche Datei er öffnen muss. Zweites Problem war, dass ich dem Makro nicht sagen kann, dass er die neuen kopierten Daten in die nächstfolgende Zeile schreiben soll.
Hat jemand eine solche Aufgabenstellung schon einmal gelöst und könnte mir ein entsprechendes Skript hier online stellen? Oder wie müßte der Code evtl. lauten?
Vielen Dank für eure Mühe und Hilfe!
Tobi

AW: Bestimmte Zellen kopieren und in neue Datei kopier
19.09.2012 13:17:35
UweD
Hallo
so z.B.
in deine Datei Datensammlung einbauen
Sub alle_Dateien_Verzeichnis() '
Dim TB1, TB2, LR&, Datei$, Dateiname$, Pfad$, SP%
Set TB1 = ThisWorkbook.ActiveSheet
SP = 1 'einfügen ab Spalte A
Pfad = "C:\temp\angebote\" ' anpassen
Datei = Dir(Pfad, vbArchive)
Do While Datei  ""
If Datei  "." And Datei  ".." Then
Dateiname = Pfad & Datei
Workbooks.Open Filename:=Dateiname
Set TB2 = Workbooks(Datei).Sheets(1)
LR = TB1.Cells(Rows.Count, SP).End(xlUp).Row + 1
TB1.Cells(LR, SP) = TB2.Range("A1")
TB1.Cells(LR, SP + 1) = TB2.Range("B2")
'weitere?
Workbooks(Datei).Close SaveChanges:=False
'evtl noch löschen
'Kill Dateiname
End If
Datei = Dir
Loop
End Sub
Gruß UweD

Anzeige
AW: Bestimmte Zellen kopieren und in neue Datei kopier
19.09.2012 13:30:47
Tobias
Hallo,
funktioniert soweit schon mal ganz gut. Jedoch schreibt er die Daten nicht in die datensammlung.xls Datei, sondern in die Personal.xlb Datei rein... Habe ich beim Anpassen des Pfadordners etwas falsch gemacht?
Gruß
Tobi
ub alle_Dateien_Verzeichnis() '
Dim TB1, TB2, LR&, Datei$, Dateiname$, Pfad$, SP%
Set TB1 = ThisWorkbook.ActiveSheet
SP = 1 'einfügen ab Spalte A
Pfad = "C:\Documents and Settings\z563164\Desktop\sonstiges\" ' anpassen
Datei = dir(Pfad, vbArchive)
Do While Datei ""
If Datei "." And Datei ".." Then
Dateiname = Pfad & Datei
Workbooks.Open Filename:=Dateiname
Set TB2 = Workbooks(Datei).Sheets(1)
LR = TB1.Cells(Rows.Count, SP).End(xlUp).Row + 1
TB1.Cells(LR, SP) = TB2.Range("A1")
TB1.Cells(LR, SP + 1) = TB2.Range("B2")
'weitere?
Workbooks(Datei).Close SaveChanges:=False
'evtl noch löschen
'Kill Dateiname
End If
Datei = dir
Loop
End Sub

Anzeige
AW: Bestimmte Zellen kopieren und in neue Datei kopier
19.09.2012 14:14:53
UweD
Hi
ich hatte geschrieben: in deine Datei Datensammlung einbauen
du hast das sicherlich in die Personal.xlb eingebaut.
Durch Set TB1 = ThisWorkbook.ActiveSheet wird das dann auch dort eingefügt.
Verschieb das makro in die Datensammlung.xls oder die o.g. Zeile muss angepasst werden.
Da ist aber dann noch die Frage: Ist die bereits geöffnet, oder soll das Makro Diese öffne und schließen.
Gruß UweD

AW: Bestimmte Zellen kopieren und in neue Datei kopier
20.09.2012 09:34:52
Tobias
Hallo Uwe,
danke schonmal für deine Antwort. Um vielleicht das Problem klar verständlich zu machen, habe ich einmal 2 Dateien mit angefügt. In die Datei "alle.xls" sollen alle Angebotsdaten gesammelt werden - die Datei "angebotsübersicht_geändert.xls" bekommen wir von den Lieferanten ausgefüllt zurückgeschickt.
Nun möchte ich gerne das die gesammelten Daten in der Datei alle.xls ab der Zelle A2 eingetragen werden, wobei z.B. das Feld Supplier die Daten enthalten soll aus der Datei "angebotsübersicht_geändert.xls" Zelle G15 (Lieferant1 habe ich mal eingetragen).
Eine Schwierigkeit kommt noch hinzu: Die Datei "angebotsübersicht_geändert.xls" verfügt noch über weitere Reiter (z.Bsp. mit dem Namen "Material"), wo auch noch Daten kopiert in die "alle.xls" kopiert werden müssen. Wie muss das noch in den Code gebastelt werden?
Grüße
Tobi
https://www.herber.de/bbs/user/81900.xls

Die Datei https://www.herber.de/bbs/user/81901.xlsx wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Bestimmte Zellen kopieren und in neue Datei kopier
20.09.2012 12:56:46
UweD
Hallo
ich hab das mal angepasst:
- weitere Tabellenblätter möglich (müssen aber auch vorhanden sein)
- fixe Tabellennamen
- Fehlerbehandlung
- Nachfrage bei öffnen der Dateien ob "Verknüpfungen aktualisiert werden sollen" unterbleibt
- Einfügen Fix auf Start ab Spalte A bezogen
Sub alle_Dateien_Verzeichnis() '
On Error GoTo Fehler
Dim TB1, TB2, TB3, LR&, Datei$, Dateiname$, Pfad$
Set TB1 = ThisWorkbook.Sheets("Tabelle1") '**** Fix eingestellt
Pfad = "C:\Documents and Settings\z563164\Desktop\Datenneu\" ' anpassen
Pfad = "C:\Temp\angebote\" ' anpassen
Datei = Dir(Pfad, vbArchive)
Application.ScreenUpdating = False
Do While Datei  ""
If Datei  "." And Datei  ".." And Datei  ThisWorkbook.Name Then
Dateiname = Pfad & Datei
' Die Abfrage Verknüpfungen etc wird nicht angezeigt
Application.DisplayAlerts = False '****
Workbooks.Open Filename:=Dateiname
Set TB2 = Workbooks(Datei).Sheets("Tabelle1") '**** Fix eingestellt
Set TB3 = Workbooks(Datei).Sheets("Material") '**** Fix eingestellt
ThisWorkbook.Activate
Application.DisplayAlerts = True '****
LR = TB1.Cells(Rows.Count, 1).End(xlUp).Row + 1
TB1.Cells(LR, 1) = TB2.Range("G15") 'Ziel Spalte1= A
TB1.Cells(LR, 2) = TB2.Range("B2")  'Ziel Spalte2 =B
'weitere?
'aus dem 2. Blatt
TB1.Cells(LR, 3) = TB3.Range("B2")  'in Spalte 3=C
'weitere?
Workbooks(Datei).Close SaveChanges:=False
'evtl noch löschen
'Kill Dateiname
End If
Datei = Dir
Loop
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Gruß UweD

Anzeige
!! meinen 'Test Pfad' noch rausnehmen
20.09.2012 13:00:00
UweD

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige