Aus Mehren Excel- Dateien Daten in eine Excel Datei einlesen
Hallo Zusammen,
ich möchte ein Excel Makro basteln, das in eine Datei Zeileninhalte aus mehreren Excel-Dateien einfügt.
Ich habe mehrere Excel-Dateien, die gleich aufgebaut sind (Rechnungen) und in einem Ordner / mit Subordnern gespeichert sind.
Ich habe eine Übersichtsdatei, wo ich manuell jetzt die Daten einfüge.
Das Makro soll aus den Excel - Dateien (nur bestimmte) Zeile (z.B. Blatt „Angebot“ Zeile G13 und G14) kopieren und in die Übersichtsdatei in diese Form
Angebot 1 Name1 PLZ 1
Angebot 2 Name2 PLZ 2
Angebot 3 Name3 PLZ 3
nebeneinander einfügen.
Hätte JEMAND Idee? HILFE
mfg
Johann
Antwort schreiben
Antwort 1 von nighty vom 30.04.2019, 14:54 Options
hi johann :-)
bitte konkrete infos
welche zellen oder zeilen oder spalten der quelle sollen in welchen zellen spalten des zieles kopiert werden ?
von einer tabelle oder alle oder einzelne ?
gruss nighty
Antwort 2 von Jona1982 vom 30.04.2019, 15:05 Options
Hi nighty
erst vielen Dank für die schnelle Antwort
Ursprungsdatei-Registerblatt "Angebot" K12
Zieldatei- Registerblatt "AngebotAuflistung" I13
Ursprungsdatei-Registerblatt "Angebot" L12
Zieldatei- Registerblatt "AngebotAuflistung" J13
usw. die anderen quellen und ziele kann ich schon allein einfügen
gruss
Johann
Antwort 3 von nighty vom 30.04.2019, 15:36 Options
hi Johann :-)
ein beispiel :-))
gruss nighty
Sub FilesListen()
Application.ScreenUpdating = False
Dim Dateien As Integer
Dim DateiName As String
With Application.FileSearch
.NewSearch
.LookIn = "D:\Temp\"
.SearchSubFolders = True
.Filename = "*.xls"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
If DateiName <> ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
Workbooks(DateiName).Sheets("Angebot").Range("K12:L12").Copy ThisWorkbook.Sheets("AngebotAuflistung").Range("I13:J13")
Workbooks(DateiName).Close
End If
Next Dateien
End If
End With
Application.ScreenUpdating = True
End Sub
Antwort 4 von Jona1982 vom 30.04.2019, 15:57 Options
Hi nighty,
das Programm funktioniert supppppeeeerrrrr.
DANKE
Eine Frage:
Bei Ausführung dieses Befehls muss ich laufend die Schaltfläche Änderung Speichern JA/NEIN betätigen (ich habe in den Angebotsdateien Makros eingebaut)– kann man das ausschalten?
Die Daten sollen so abgespeichert werden :
z.B. Angebot 1 Zeile I und J 13, dann soll Excel „runter“ springen (Angebot 2) - I und J 14 usw. könntest Du es noch implementieren.
Muss man immer dieser Dateien aufmachen??
DANKE im Voraus
Gruss Johann
Antwort 5 von nighty vom 30.04.2019, 15:57 Options
hi Johann :-)
wenn es sehr viele dateien sind weitere ereignisausschaltungen um den vorgang zu beschleunigen
gruss nighty
Sub FilesListen()
Call EventsOff
Dim Dateien As Integer
Dim DateiName As String
With Application.FileSearch
.NewSearch
.LookIn = "D:\Temp\"
.SearchSubFolders = True
.Filename = "*.xls"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
If DateiName <> ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
Workbooks(DateiName).Sheets("Angebot").Range("K12:L12").Copy ThisWorkbook.Sheets("AngebotAuflistung").Range("I13:J13")
Workbooks(DateiName).Close
End If
Next Dateien
End If
End With
Call EventsOn
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Antwort 6 von Jona1982 vom 30.04.2019, 16:26 Options
Hi nighty
es funktioniert leider nicht.
Ich muss immer die Schaltfläche Änderung Speichern JA/NEIN betätigen um weiter zu kommen.
Die Daten sollen so abgespeichert werden :
z.B. Angebot 1 Zeile I und J 13, dann soll Excel „runter“ springen (Angebot 2) - I und J 14 usw. könntest Du es noch implementieren
Diese Auflistung soll untereinander gemacht werden.
Angebot 1 Name1(I13) PLZ 1 (J13)
Angebot 2 Name2 (I14) PLZ 2 (J14)
Angebot 3 Name3 (I15) PLZ 3 (J15) usw.
danke im Voraus
gruss Johann
Antwort 7 von nighty vom 30.04.2019, 16:34 Options
hi Johann :-)
gruss nighty
bezieht sich auf auf die variable DateiNamen
Workbooks(DateiName).Close SaveChanges:=True
bezieht sich auf auf die Namen DateiNamen
Workbooks("DateiName").Close SaveChanges:=True
bezieht sich auf auf die datei wo das makro gestatet worden ist
ThisWorkbook.Close SaveChanges:=True
bezieht sich auf auf einen index
Workbooks(1).Close SaveChanges:=True
Antwort 8 von Jona1982 vom 30.04.2019, 16:51 Options
Hi nighty
es funktioniert SUPPEEERRRR.
Könntest Du noch diese automatische Funktion implementieren. Ich habe da keinen Schimmel:
Workbooks(DateiName).Sheets("Angebot").Range("K12:L12").Copy ThisWorkbook.Sheets("AngebotAuflistung").Range("I13:J13")
nächste Schlaufe
ThisWorkbook.Sheets("AngebotAuflistung").Range("I14:J14")
usw.
danke im Voraus
gruss Johann
Antwort 9 von nighty vom 30.04.2019, 16:52 Options
hi Johann :-)
vielleicht so
gruss nighty
Sub FilesListen()
Call EventsOff
Dim Dateien As Integer
Dim DateiName As String
Dim zaehler As Boolean
With Application.FileSearch
.NewSearch
.LookIn = "D:\Temp\"
.SearchSubFolders = True
.Filename = "*.xls"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
DateiName = Dir(.FoundFiles(Dateien))
If DateiName <> ThisWorkbook.Name Then
Workbooks.Open Filename:=.FoundFiles(Dateien)
If zaehler = False Then
zeile = 13
Else
zeile = ThisWorkbook.Sheets("AngebotAuflistung").Cells(Rows.Count, 9).End(xlUp).Row + 1
End If
Workbooks(DateiName).Sheets("Angebot").Range("K12:L12").Copy ThisWorkbook.Sheets("AngebotAuflistung").Range("I" & zeile & ":J" & zeile)
zaehler = True
Workbooks(DateiName).Close SaveChanges:=True
End If
Next Dateien
End If
End With
Call EventsOn
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Antwort 10 von nighty vom 30.04.2019, 16:59 Options
hi Johann :-)
es ist natürlich möglich geschlossene dateien auszulesen,doch der vorgang ist langsamer :(
stichwort excel4makro
gruss nighty
Antwort 11 von nighty vom 30.04.2019, 17:07 Options
hi Johann :-)
da ich schusslig bin :-)) fehlt eine deklarierung
Dim zeile as long
bitte noch am anfang einfuegen :-)
gruss nighty
Antwort 12 von Jona1982 vom 30.04.2019, 17:10 Options
Danke
ich muss los in den Urlaub
noch ein mal
Vielen vielen
Dank
Antwort 13 von Johanna153 vom 26.07.2019, 09:39 Options
*Threadedit* \t\
Admininfo: Führ bitte fremde Threads nicht fort indem du eigene Anfragen anhängst.
Die User werden es dir danken. Siehe FAQ 2.