Hallo Zusammen,
ich habe vor 2 Wochen angefangen mir VBA zu Gemüte zu führen und sitze inzwischen nach 3 Tage wildem Forendurchsuchens endgültig auf dem Trockenen. Ich hoffe, ihr könnt mir helfen und mich zurück ins Meer schieben.
Folgende Situation:
Ich habe einen Ordner, in dem eine große Zahl von .dat-Files sind, in denen Messwerte enthalten sind (Dreispaltig, XYY mit jeweils einer Headerzeile und dann eben den Werten).
Die Messwerte in so einer Datei werden von mir verarbeitet, sagen wir der einfachheithalber, mit 2 multpliziert und das Ergebnis in Spalte 4&5 kopiert. Diese Datei wird dann unter anderem Name gespeichert.
Soweit ist alles gut, ich hab das Makro (Nennen wir es MakroX) und kann einzelne Dateien per Knopfdruck bearbeiten, nachdem ich sie geöffnet habe.
Jetzt möchte ich allerdings mit einem Knopfdruck ALLE Dateien in einem abgefragten Ordner bearbeiten und als "processed-OriginalFilename.dat" speichern und komme hier absolut nicht weiter.
Mein Plan wäre also eine leere Excelmappe zu öffnen und mein "Mastermakro" zu starten, dass mir dann den folgenden Plan ermöglicht
-
Dialog öffnen, mit dem der Ordner ausgesucht wird, dessen Dateien ich bearbeiten will - Check, habe ich hinbekommen.
-
Alle Dateinamen des Ordners in ein Array schreiben - Uaaaaaaah, Hilfe!
-
Schleife für alle Einträge im Array, die MakroX auf den i-ten Eintrag anwendet und i durchiteriert - Könnte ich mir vorstellen, dass ich alleine hinbekomme, aber soweit war ich leider noch nicht (irgendwas wie: Open Datei-i, call MakroX, close Datei i, i=i+1)
-
Endlich wieder Gut fühlen, weil ich mir stundenlanges Datenhinundherschieben gespart habe ;)
Könntet ihr mir bitte bei Schritt 2-4 behilflich sein oder gerne auch andere Vorgehensweisen vorschlagen?
Mein (wild aus dem Netz zusammenkopierter) Code sieht momentan so aus:
Option Explicit
Sub ordner_suchen()
Dim ordner As String
Dim dat
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim ws As Worksheet
'----------------------------------------------------------------------
' Ordner Auswählen von dem Die Liste gemacht wird
Set dat = Application.FileDialog(msoFileDialogFolderPicker)
With dat
.Title = "Netzwerk...."
.InitialFileName = "C:\Woauchimmer" 'oder was auch immer
If .Show = -1 Then ordner = .SelectedItems(1) 'Zur weiteren verwendung
' MsgBox ordner
End With
'-----------------------------------------------------------------------
' Dateien im Ordner zählen damit ich nachher weiß, wie lange i durchiteriert wird
Dim strDir As String
Dim fso As Object
Dim objFiles As Object
Dim obj As Object
Dim NoOfFiles As Long
Set fso = CreateObject("Scripting.FileSystemObject")
Set objFiles = fso.GetFolder(ordner).Files
NoOfFiles = objFiles.Count
MsgBox "Number of Files equals " & NoOfFiles 'Total number of files ' Zur Kontrolle
Set objFiles = Nothing
Set fso = Nothing
Set obj = Nothing
' Datei in Array schreiben
' MakroX auf einzelne Dateien anwenden
' BeHappy
End Sub
Vielen Dank,
|