Mehrere .xlsx Excel-Dateien zusammenführen - bestimmte Zellen auslesen - als .txt speichern - und das komplex
Hallo zusammen,
zäume das Pferd von hinten auf:
Am Ende soll eine .txt Datei mit folgendem Inhalt:geschrieben werden::
Datum, Zahl1, Zahl2, Zahl3, Zahl4
Datum, Zahl1, Zahl2, Zahl3, Zahl4
Datum, Zahl1, Zahl2, Zahl3, Zahl4
usw.
Über 1000 .xlsx, die in einem Ordner liegen, sind mit jeweils 2-3 Arbeitsblättern ausgestattet und sollen selektiv ausgelesen werden.
Datum:
Aus dem 2. Arbeitsblatt der jeweiligen Dateien soll das Datum, welches -wie soll es anders sein - je nach Datei in Zellen A2-A4 verstreut zu finden ist, ausgelesen werden. Allerdings hat Zelle A2 immer folgenden Inhalt: "Date: mm/dd/yy". Benötigt wird aber nur "mm/dd/yy". Falls es was bringt: im Dateinamen der jeweiligen Dateien ist auch das Datum enthalten. Der Dateiname sieht folgendermaßen aus: "berechnungen_yyyymmdd.xlsx" wobei y= Jahr, m =Monat und d=Tag.
Zahl1:
In irgend einer Zeile des 2. Arbeitsblattes steht ein Name Bsp: "Peter positiv" in Spalte D, welchem in Spalte J und Spalte K der jeweiligen Zeile Zahlen zugeordnet sind. Diese Spalte J soll
Zahl1 werden.
Zahl2:
Spalte K aus Zeile "Peter positiv" (s.Zahl1.) möchte Zahl2 werden.
Zahl3:
In irgend einer weiteren Zeile des 2. Arbeitsblattes steht ein weiterer Name Bsp: "Peter negativ" in Spalte D, welchem in Spalte J und Spalte K der jeweiligen Zeile Zahlen zugeordnet sind. Diese Spalte J soll Zahl3 werden.
Zahl4:
Spalte K aus Zeile "Peter negativv" (s.Zahl3) darf Zahl4 werden.
Habe schon mit folgendem Script rumgefummelt - kriegs aber einfach nicht hin. Bin absulte Laiin.
Bin für Eure Hilfe äußerst dankbar.
Code-Beispiel (gestestet mit VB6)
'
' Excel-Makro: Excel-Dateien selektiv auslesen
' >>> Erstellt eine neue Textdate <<<
' Autor: Peter_Punkt
' Version: 01 - 29.06.2010
' Hinweis: Verweis auf 'Microsoft Excel xx.x Object Library' notwendig
'
Sub ExcelZusammenFühren()
Const OrdnerPfad As String = "C:\$PP\$XLS\"
Dim xls_Mappe As Excel.Workbook ' Excel Arbeitsmappe
Dim xls_Blatt As Excel.Worksheet ' Excel Tabelle
Dim fso As Object ' FileSystemObject
Dim Dialog As Object ' Datei-Öffnen Dialog
Dim Textdatei As Object ' Ausgabedatei
Dim Zeile As Integer
Dim Spalte As Integer
Dim Textzeile As String
Dim Dateiname As String
Dim Pos As Long
Set Dialog = CreateObject("MSComDlg.CommonDialog")
Dialog.InitDir = OrdnerPfad
Dialog.Filter = "*.xls (Excel)|*.xls" ' Nur Excel-Dateien anzeigen
Dialog.ShowOpen ' Dialog öffnen
If Dialog.FileName = "" Then Exit Sub ' Falls Abbruch
Dateiname = Dialog.FileName ' Dateiname mit Pfad
'MsgBox Dateiname
Set fso = CreateObject("Scripting.FileSystemObject")
Set xls_Mappe = Workbooks.Open(Dateiname)
Set xls_Blatt = xls_Mappe.Worksheets("Tabelle4")
Pos = InStrRev(Dateiname, ".") ' Dateiendung suchen
Set Textdatei = fso.CreateTextFile(Left$(Dateiname, Pos) & "txt", True) ' .txt
'MsgBox Left$(Dateiname, Pos) & "txt"
For Zeile = 1 To 11
If Zeile = 6 Or Zeile = 9 Then GoTo Weiter
xls_Blatt.Activate
xls_Blatt.Range("A" & Zeile).Select ' Aktive Zelle auswählen
Textzeile = ActiveCell.Value
For Spalte = 1 To 250 ' Maximal 250 Spalten pro Zeile untersuchen
If ActiveCell.Offset(0, Spalte).Value = "" Then
Exit For ' Ende der Zeile
End If
Textzeile = Textzeile & vbTab & ActiveCell.Offset(0, Spalte).Value
Next
Textdatei.Writeline (Textzeile) ' Zeile schreiben
Weiter:
Next
xls_Mappe.Close ' Excel-Datei schließen
Textdatei.Close ' Textdatei schließen
Set Textdatei = Nothing ' Resourcen wieder freigeben
Set Dialog = Nothing
Set fso = Nothing
Set xls_Blatt = Nothing
Set xls_Mappe = Nothing
End Sub
zäume das Pferd von hinten auf:
Am Ende soll eine .txt Datei mit folgendem Inhalt:geschrieben werden::
Datum, Zahl1, Zahl2, Zahl3, Zahl4
Datum, Zahl1, Zahl2, Zahl3, Zahl4
Datum, Zahl1, Zahl2, Zahl3, Zahl4
usw.
Über 1000 .xlsx, die in einem Ordner liegen, sind mit jeweils 2-3 Arbeitsblättern ausgestattet und sollen selektiv ausgelesen werden.
Datum:
Aus dem 2. Arbeitsblatt der jeweiligen Dateien soll das Datum, welches -wie soll es anders sein - je nach Datei in Zellen A2-A4 verstreut zu finden ist, ausgelesen werden. Allerdings hat Zelle A2 immer folgenden Inhalt: "Date: mm/dd/yy". Benötigt wird aber nur "mm/dd/yy". Falls es was bringt: im Dateinamen der jeweiligen Dateien ist auch das Datum enthalten. Der Dateiname sieht folgendermaßen aus: "berechnungen_yyyymmdd.xlsx" wobei y= Jahr, m =Monat und d=Tag.
Zahl1:
In irgend einer Zeile des 2. Arbeitsblattes steht ein Name Bsp: "Peter positiv" in Spalte D, welchem in Spalte J und Spalte K der jeweiligen Zeile Zahlen zugeordnet sind. Diese Spalte J soll
Zahl1 werden.
Zahl2:
Spalte K aus Zeile "Peter positiv" (s.Zahl1.) möchte Zahl2 werden.
Zahl3:
In irgend einer weiteren Zeile des 2. Arbeitsblattes steht ein weiterer Name Bsp: "Peter negativ" in Spalte D, welchem in Spalte J und Spalte K der jeweiligen Zeile Zahlen zugeordnet sind. Diese Spalte J soll Zahl3 werden.
Zahl4:
Spalte K aus Zeile "Peter negativv" (s.Zahl3) darf Zahl4 werden.
Habe schon mit folgendem Script rumgefummelt - kriegs aber einfach nicht hin. Bin absulte Laiin.
Bin für Eure Hilfe äußerst dankbar.
Code-Beispiel (gestestet mit VB6)
'
' Excel-Makro: Excel-Dateien selektiv auslesen
' >>> Erstellt eine neue Textdate <<<
' Autor: Peter_Punkt
' Version: 01 - 29.06.2010
' Hinweis: Verweis auf 'Microsoft Excel xx.x Object Library' notwendig
'
Sub ExcelZusammenFühren()
Const OrdnerPfad As String = "C:\$PP\$XLS\"
Dim xls_Mappe As Excel.Workbook ' Excel Arbeitsmappe
Dim xls_Blatt As Excel.Worksheet ' Excel Tabelle
Dim fso As Object ' FileSystemObject
Dim Dialog As Object ' Datei-Öffnen Dialog
Dim Textdatei As Object ' Ausgabedatei
Dim Zeile As Integer
Dim Spalte As Integer
Dim Textzeile As String
Dim Dateiname As String
Dim Pos As Long
Set Dialog = CreateObject("MSComDlg.CommonDialog")
Dialog.InitDir = OrdnerPfad
Dialog.Filter = "*.xls (Excel)|*.xls" ' Nur Excel-Dateien anzeigen
Dialog.ShowOpen ' Dialog öffnen
If Dialog.FileName = "" Then Exit Sub ' Falls Abbruch
Dateiname = Dialog.FileName ' Dateiname mit Pfad
'MsgBox Dateiname
Set fso = CreateObject("Scripting.FileSystemObject")
Set xls_Mappe = Workbooks.Open(Dateiname)
Set xls_Blatt = xls_Mappe.Worksheets("Tabelle4")
Pos = InStrRev(Dateiname, ".") ' Dateiendung suchen
Set Textdatei = fso.CreateTextFile(Left$(Dateiname, Pos) & "txt", True) ' .txt
'MsgBox Left$(Dateiname, Pos) & "txt"
For Zeile = 1 To 11
If Zeile = 6 Or Zeile = 9 Then GoTo Weiter
xls_Blatt.Activate
xls_Blatt.Range("A" & Zeile).Select ' Aktive Zelle auswählen
Textzeile = ActiveCell.Value
For Spalte = 1 To 250 ' Maximal 250 Spalten pro Zeile untersuchen
If ActiveCell.Offset(0, Spalte).Value = "" Then
Exit For ' Ende der Zeile
End If
Textzeile = Textzeile & vbTab & ActiveCell.Offset(0, Spalte).Value
Next
Textdatei.Writeline (Textzeile) ' Zeile schreiben
Weiter:
Next
xls_Mappe.Close ' Excel-Datei schließen
Textdatei.Close ' Textdatei schließen
Set Textdatei = Nothing ' Resourcen wieder freigeben
Set Dialog = Nothing
Set fso = Nothing
Set xls_Blatt = Nothing
Set xls_Mappe = Nothing
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 316349
Url: https://administrator.de/forum/mehrere-xlsx-excel-dateien-zusammenfuehren-bestimmte-zellen-auslesen-als-txt-speichern-und-das-komplex-316349.html
Ausgedruckt am: 28.04.2025 um 12:04 Uhr
2 Kommentare
Neuester Kommentar