gelöst Daten aus meheren Sheets in mehreren Dateien sammeln
Hallo zusammen,
bin neu hier im Forum und auch bekennender VBA-Unwissender. Ich suche nach einer Lösung mit der ich aus verschiedenen Dateien, mit jeweils meheren Tabellenblättern immer die gleich Zelle aus jedem Tabellenblatt in eine Zeile (aufsteigend) einer neuen Exceldatei zusammen fassen kann.
Jetzt mal zu den Details:
ich habe eine große Anzahl (einige hundert) Dateien mit dem Namen 225-xxxx_xxxx_raw.tdm (xxxx variiert im Dateinamen und enthält so etwas wie Losnummern also nur Zahlen). Das Dateiformat *.tdm kann ich ganz normal über Doppelklick öffnen (Plugin). In diesen Dateien gibt es jeweils 89 Tabellenblätter. In den Blättern 2-89 (Namen LED 01 bis LED 88) stehen immer an gleicher Stelle Zahlenwerte. Diese möchte ich in einer neuen Datei Auswertung.xlsx zusammen fassen. Pro gelesener Datei soll eine Zeile in Auswertung.xlsx hinzugefügt werden mit Dateinamen in Spalte 1 und den 88 Zahlenwerten in Spalte 2-89.
Ich hoffe ihr verzeiht meine Unwissenheit. Ich habe zwar einige Ansätze zumindest für das Datei öffnen gefunden aber Durchgehen vieler Dateien und mehrerer Blätter hab ich nicht gefunden.
Grüße
Christian
ich habe eine große Anzahl (einige hundert) Dateien mit dem Namen 225-xxxx_xxxx_raw.tdm (xxxx variiert im Dateinamen und enthält so etwas wie Losnummern also nur Zahlen). Das Dateiformat *.tdm kann ich ganz normal über Doppelklick öffnen (Plugin). In diesen Dateien gibt es jeweils 89 Tabellenblätter. In den Blättern 2-89 (Namen LED 01 bis LED 88) stehen immer an gleicher Stelle Zahlenwerte. Diese möchte ich in einer neuen Datei Auswertung.xlsx zusammen fassen. Pro gelesener Datei soll eine Zeile in Auswertung.xlsx hinzugefügt werden mit Dateinamen in Spalte 1 und den 88 Zahlenwerten in Spalte 2-89.
Ich hoffe ihr verzeiht meine Unwissenheit. Ich habe zwar einige Ansätze zumindest für das Datei öffnen gefunden aber Durchgehen vieler Dateien und mehrerer Blätter hab ich nicht gefunden.
Grüße
Christian
8 Antworten
- LÖSUNG bastla schreibt am 16.04.2012 um 17:01:45 Uhr
- LÖSUNG NetWolf schreibt am 16.04.2012 um 17:19:04 Uhr
- LÖSUNG opto79 schreibt am 16.04.2012 um 18:12:08 Uhr
- LÖSUNG bastla schreibt am 16.04.2012 um 18:21:25 Uhr
- LÖSUNG opto79 schreibt am 16.04.2012 um 18:29:08 Uhr
- LÖSUNG opto79 schreibt am 17.04.2012 um 14:02:15 Uhr
- LÖSUNG bastla schreibt am 17.04.2012 um 14:48:52 Uhr
- LÖSUNG opto79 schreibt am 17.04.2012 um 15:11:40 Uhr
- LÖSUNG bastla schreibt am 17.04.2012 um 14:48:52 Uhr
- LÖSUNG opto79 schreibt am 17.04.2012 um 14:02:15 Uhr
- LÖSUNG opto79 schreibt am 16.04.2012 um 18:29:08 Uhr
- LÖSUNG bastla schreibt am 16.04.2012 um 18:21:25 Uhr
- LÖSUNG opto79 schreibt am 16.04.2012 um 18:12:08 Uhr
LÖSUNG 16.04.2012, aktualisiert 18.10.2012
Hallo opto79 und willkommen im Forum!
umsetzen ...
Grüße
bastla
Durchgehen vieler Dateien und mehrerer Blätter hab ich nicht gefunden
Ersteres hatten wir etwa hier, und letzteres lässt sich mit einer Schleife der Art01.
For i = 2 To 89
02.
Wert = Sheets(i).Range("A3").Value
03.
Next
Grüße
bastla
LÖSUNG 16.04.2012 um 17:19 Uhr
Moin Moin,
soweit ich lesen konnte -> Verwenden Sie die COM-API des TDM Excel Add-Ins, um TDM-/TDMS-Dateien per VBA-Script in Microsoft Excel zu laden.
Quelle: http://zone.ni.com/devzone/cda/tut/p/id/7526
Eine andere Möglichkeit sehe im im Moment nicht. Als VBA - Unwissender solltest du deine Kenntnisse diesbezüglich schnell erweitern, wenn du solche Projekte planst.
Grüße aus Rostock
Wolfgang
(Netwolf)
soweit ich lesen konnte -> Verwenden Sie die COM-API des TDM Excel Add-Ins, um TDM-/TDMS-Dateien per VBA-Script in Microsoft Excel zu laden.
Quelle: http://zone.ni.com/devzone/cda/tut/p/id/7526
Eine andere Möglichkeit sehe im im Moment nicht. Als VBA - Unwissender solltest du deine Kenntnisse diesbezüglich schnell erweitern, wenn du solche Projekte planst.
Grüße aus Rostock
Wolfgang
(Netwolf)
LÖSUNG 16.04.2012 um 18:12 Uhr
Hallo Wolfgang,
kannst du mir sagen wie ich diese COM-API verwende? Ich hab mir jetzt folgenden Code zusammengebastelt:
Sub Zusammenfassen()
Die TDM Datei versucht diese Funktion auch zu oeffnen, allerdings ist die Formatierung exakt die die Excel ohne dasc Add-On erzeugt. Hier existiert dann nur ein Tabellenblatt und ich bekomme einen Index-Fehler.
Ich werde diese Projekte auch nicht regelmäßig angehen. Ich habe nur auf einer Anlage jede Menge Daten im o.g. Format gefunden von denen niemand wusste das sie existieren, jetzt möchte ich diese für eine Statistik nutzen.
Grüße
Christian
kannst du mir sagen wie ich diese COM-API verwende? Ich hab mir jetzt folgenden Code zusammengebastelt:
Sub Zusammenfassen()
01.
Sub Zusammenfassen()
02.
03.
Const sSourcePath = "C:\..........." 'Ordner der Dateien
04.
Set wbGes = ActiveWorkbook 'aktuelle Mappe und ...
05.
Set wsZiel = ActiveWorkbook.ActiveSheet '... aktuelle Tabelle zwischenspeichern
06.
Set fso = CreateObject("Scripting.FileSystemObject")
07.
08.
Z = 2 'ab Zeile 2 in der Sammeltabelle eintragen
09.
10.
11.
Application.ScreenUpdating = False 'während der folgenden Aktionen Excel-Bildschirm "einfrieren"; diese Zeile kann auch auskommentiert / entfernt werden
12.
For Each oFile In fso.GetFolder(sSourcePath).Files 'alle Dateien des Ordners durchgehen
13.
If LCase(fso.GetExtensionName(oFile.Name)) = "tdm" Then 'nur .xls-Dateien bearbeiten; falls "xlsx" bitte anpassen; nur Kleinbuchstaben verwenden
14.
Set wbQuellDatei = Application.Workbooks.Open(oFile.Path) 'Datei öffnen
15.
For I = 2 To 89
16.
Wert = Sheets(I).Range("F5").Copy 'Zelle auslesen und ...
17.
wsZiel.Cells(Z, I).Paste '... einfügen
18.
Next
19.
Z = Z + 1 'Zeilennummer der Zieltabelle für das nächste Einfügen erhöhen
20.
wbQuellDatei.Close 'Datei schließen
21.
End If
22.
Next
23.
Application.ScreenUpdating = True 'Excel-Bildschirmanzeige wieder "auftauen" ;-)
24.
wsZiel.Activate 'zur Sicherheit Zieltabelle aktivieren
25.
wbGes.Save 'Sammeldatei speichern
26.
MsgBox "Fertig."
27.
End Sub
Ich werde diese Projekte auch nicht regelmäßig angehen. Ich habe nur auf einer Anlage jede Menge Daten im o.g. Format gefunden von denen niemand wusste das sie existieren, jetzt möchte ich diese für eine Statistik nutzen.
Grüße
Christian
LÖSUNG 16.04.2012 um 18:21 Uhr
Hallo opto79!
Um übrigens noch den Dateinamen in Spalte A unterzubringen, könntest Du vor Zeile 15 einfügen:
Grüße
bastla
kannst du mir sagen wie ich diese COM-API verwende?
Eine Beschreibung ist auf der von NetWolf genannten Seite verlinkt: http://zone.ni.com/devzone/cda/tut/p/id/10207Um übrigens noch den Dateinamen in Spalte A unterzubringen, könntest Du vor Zeile 15 einfügen:
wsZiel.Cells(Z, "A").Value = oFile.Name
bastla
LÖSUNG 16.04.2012 um 18:29 Uhr
Danke, werd mich morgen weiter damit rumplagen .
Grüße
Christian
Grüße
Christian
LÖSUNG 17.04.2012 um 14:02 Uhr
Hello again ,
ich hab mich jetzt mal versucht mit dem Add-In zu beschäftigen. Habe zunächst versucht lediglich via VBA die *.tdm zu öffnen (Ist dann als Mappe1.xlsx aktiv) und dann wieder mit dem Dateinamen.xlsx abzuspeichern. Es scheitert wohl am Aufruf des Objektes, jedenfalls bekomme ich immer den Fehler Objekt erforderlich.
könnt ihr mir beim Aufruf dieses ExcelTDM.TDMAddin helfen?
Grüße
Christian
ich hab mich jetzt mal versucht mit dem Add-In zu beschäftigen. Habe zunächst versucht lediglich via VBA die *.tdm zu öffnen (Ist dann als Mappe1.xlsx aktiv) und dann wieder mit dem Dateinamen.xlsx abzuspeichern. Es scheitert wohl am Aufruf des Objektes, jedenfalls bekomme ich immer den Fehler Objekt erforderlich.
01.
Sub Umbenennen()
02.
03.
COMAddIns.Item ("ExcelTDM.TDMAddin")
04.
05.
Const sSourcePath = "Q:\....."
06.
07.
For Each oFile In fso.GetFolder(sSourcePath).Files 'alle Dateien des Quellordners durchgehen
08.
If LCase(fso.GetExtensionName(oFile.Name)) = "tdm" Then 'nur .tdm-Dateien bearbeiten, es sind auch noch tdx Files vorhanden
09.
Set wbQuellDatei = Object.ImportFile(oFile.Path)
10.
Active.Workbook.SaveAs (oFile.Name)
11.
End If
12.
Next
13.
14.
End Sub
Grüße
Christian
LÖSUNG 17.04.2012 um 14:48 Uhr
Hallo opto79!
Wird's mit dieser Zeile 3
besser?
Grüße
bastla
Wird's mit dieser Zeile 3
Set Object = COMAddIns.Item("ExcelTDM.TDMAddin")
Grüße
bastla
LÖSUNG 17.04.2012 um 15:11 Uhr
Nein leider nicht, der Fehler bleibt der gleiche. Ich hab auch die PDF Anleitung von NI durchgesehen und in der VBA Hilfe gesucht wie ich das Add In aktiviere. Wenn ich nämlich im VBA auf Add-Ins klicke zeigt er mir das TDM-AddIn nicht an.
Grüße
Christian
Grüße
Christian
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte