simonec
Goto Top

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

Content-Key: 316349

Url: https://administrator.de/contentid/316349

Printed on: May 5, 2024 at 13:05 o'clock

Member: StefanKittel
StefanKittel Sep 27, 2016 at 15:22:12 (UTC)
Goto Top
Hallo,

sorry, aber was ist die Frage?
Du kannst sowas mit VBA programmieren oder programmieren lassen.

Stefan
Member: simonec
simonec Sep 28, 2016 at 13:56:51 (UTC)
Goto Top
Hallo Stefan, die Frage lautet, wie kann ich den geposteten Code auf meine Bedürfnisse anpassen. Ich habe versucht den Code zu verstehen und umzuwandeln, allerdings fehlt mir das Know-how, so dass ich um Hilfe bitte.