opto79
Goto Top

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

Content-Key: 183595

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

Printed on: April 25, 2024 at 15:04 o'clock

Member: bastla
bastla Apr 16, 2012, updated at Oct 18, 2012 at 16:50:39 (UTC)
Goto Top
Hallo opto79 und willkommen im Forum!
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 Art
For i = 2 To 89
    Wert = Sheets(i).Range("A3").Value  
Next
umsetzen ...

Grüße
bastla
Member: NetWolf
NetWolf Apr 16, 2012 at 15:19:04 (UTC)
Goto Top
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)
Member: opto79
opto79 Apr 16, 2012 at 16:12:08 (UTC)
Goto Top
Hallo Wolfgang,

kannst du mir sagen wie ich diese COM-API verwende? Ich hab mir jetzt folgenden Code zusammengebastelt:
Sub Zusammenfassen()

Sub Zusammenfassen()

Const sSourcePath = "C:\..........." 'Ordner der Dateien  
Set wbGes = ActiveWorkbook 'aktuelle Mappe und ...  
Set wsZiel = ActiveWorkbook.ActiveSheet '... aktuelle Tabelle zwischenspeichern  
Set fso = CreateObject("Scripting.FileSystemObject")  

Z = 2 'ab Zeile 2 in der Sammeltabelle eintragen  


Application.ScreenUpdating = False 'während der folgenden Aktionen Excel-Bildschirm "einfrieren"; diese Zeile kann auch auskommentiert / entfernt werden  
For Each oFile In fso.GetFolder(sSourcePath).Files 'alle Dateien des Ordners durchgehen  
    If LCase(fso.GetExtensionName(oFile.Name)) = "tdm" Then 'nur .xls-Dateien bearbeiten; falls "xlsx" bitte anpassen; nur Kleinbuchstaben verwenden  
        Set wbQuellDatei = Application.Workbooks.Open(oFile.Path) 'Datei öffnen  
        For I = 2 To 89
            Wert = Sheets(I).Range("F5").Copy 'Zelle auslesen und ...  
            wsZiel.Cells(Z, I).Paste '... einfügen   
        Next
        Z = Z + 1 'Zeilennummer der Zieltabelle für das nächste Einfügen erhöhen  
        wbQuellDatei.Close 'Datei schließen  
    End If
Next
Application.ScreenUpdating = True 'Excel-Bildschirmanzeige wieder "auftauen" ;-)  
wsZiel.Activate 'zur Sicherheit Zieltabelle aktivieren  
wbGes.Save 'Sammeldatei speichern  
MsgBox "Fertig."  
End Sub

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
Member: bastla
bastla Apr 16, 2012 at 16:21:25 (UTC)
Goto Top
Hallo opto79!
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/10207
Um übrigens noch den Dateinamen in Spalte A unterzubringen, könntest Du vor Zeile 15 einfügen:
wsZiel.Cells(Z, "A").Value = oFile.Name
Grüße
bastla
Member: opto79
opto79 Apr 16, 2012 at 16:29:08 (UTC)
Goto Top
Danke, werd mich morgen weiter damit rumplagen face-wink.

Grüße
Christian
Member: opto79
opto79 Apr 17, 2012 at 12:02:15 (UTC)
Goto Top
Hello again face-wink,

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.

Sub Umbenennen()

COMAddIns.Item ("ExcelTDM.TDMAddin")  

Const sSourcePath = "Q:\....."  

For Each oFile In fso.GetFolder(sSourcePath).Files 'alle Dateien des Quellordners durchgehen  
    If LCase(fso.GetExtensionName(oFile.Name)) = "tdm" Then 'nur .tdm-Dateien bearbeiten, es sind auch noch tdx Files vorhanden  
        Set wbQuellDatei = Object.ImportFile(oFile.Path)
        Active.Workbook.SaveAs (oFile.Name)
    End If
Next

End Sub

könnt ihr mir beim Aufruf dieses ExcelTDM.TDMAddin helfen?

Grüße
Christian
Member: bastla
bastla Apr 17, 2012 at 12:48:52 (UTC)
Goto Top
Hallo opto79!

Wird's mit dieser Zeile 3
Set Object = COMAddIns.Item("ExcelTDM.TDMAddin") 
besser?

Grüße
bastla
Member: opto79
opto79 Apr 17, 2012 at 13:11:40 (UTC)
Goto Top
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