Schönen guten Tag,
ich habe einen Ordner in dem etwas über 100csv dateien (dateiendung *.mob) liegen, mit jeder dieser dateien soll nun folgendes gemacht werden:
1) kx011.mob öffnen
1.1) nach zeichen trennen (tab, semikolon, 1. spalte nicht importieren)
1.2) speichern als kx011.xls
2) kx011.mob öffnen
2.1) mit fester breite trennen (3 zeichen, 3zeichen, 3.spalte nicht importieren)
2.2) Spalten A und B kopieren
2.3) in kx011.xls ganz links einfügen, speichern als kx011.xls
weiter mit der nächsten datei und wieder das selbe:
1) kx012.mob öffnen
1.1) nach zeichen trennen (tab, semikolon, 1. spalte nicht importieren)
1.2) speichern als kx012.xls
... soweit so einfach, wenn ich das von hand mache ist der arbeitsaufwand ca 2-3stunden (was ja noch vertretbar wäre wenn das eine einmalige aufgabe wäre), allerdings fällt das regelmäsig an und ich dachte mir "das müsste sich ja automatisieren lassen..."
also hab ich den workflow mit dem makro rekorder aufgezeichnet (bin ein absoluter vba DAU) und dachte mir "dass sollte sich ja recht einfach anpassen lassen"... nach einer weile googeln, vba handbücher wälzen, rumprobieren und rumfragen... sieht das aktuelle makro so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | Sub von_hand_bearbeitet()
Dim DATcsv As String
Dim DATxls As String
Dim pfad As String
pfad = "C:\Dokumente und Einstellungen\GolderM\Desktop\tkmtest"
DATcsv = Dir$(pfad & "*.mob" )
While Len(DATcsv)
DATxls = pfad & Left$(DATcsv, Len(DATcsv) - 4) & ".xls"
Workbooks.OpenText Filename:=pfad & DATcsv, local:= True , Origin:=xlMSDOS, StartRow:=1, Tab:= True , Semicolon:= True
ActiveWorkbook.SaveAs FileFormat:= ".xls"
Workbooks.OpenText Filename:=pfad & DATcsv, local:= True , Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array( _
Array(0, 1), Array(3, 1), Array(6, 9)), TrailingMinusNumbers:= True
Columns( "A:B" ). Select
Selection.Copy
DATcsv = Dir$
Wend
End Sub
|
Das makro läuft auch durch, sogar fehlerfrei... aber es macht auch nichts :D
als laie seh ich schon 2fehler:
1) kann das mit dem speichern so funktionieren? gemeint ist die zeile
1 | ActiveWorkbook.SaveAs FileFormat:= ".xls"
|
erreichen möchte ich damit, das immer der dateiname der gerade offenen datei genommen wird, aber eben nicht wieder als ".mob" gespeichert wird, sondern als ".xls", aber ob die zeile das tut erschließt sich mir nicht (wie gesagt, es kommen weder fehlermeldungen noch resultate).
und mir ist aufgefallen dass das so, wie ich das mit dem kopieren der Spalten A und B realisiert habe, garnicht funktionieren kann weil:
1 2 3 4 5 6 |
Columns( "A:B" ). Select
Selection.Copy
|
dann würde er es ja immer in "kx032.xls" einfügen, aber das ist ja nicht sinn der sache.. es soll ja der dateiname der eben verarbeiteten .mob nehmen und nur die endung bzw. den dateityp ändern, (wie) kann das realisiert werden?
für eventuell entstehende mühe(n) und geleistete hilfe(n) schonmal im vorraus einen zutiefst empfundenen, herzlichen dank
Mit freundlichen Grüßen
Marc Golder
|