Thema Datum  Von Nutzer Rating
Antwort
Rot alle csv in einem ordner nach dem selben schema in xls umwandeln
30.01.2013 12:45:25 Marc Golder
Solved

Ansicht des Beitrags:
Von:
Marc Golder
Datum:
30.01.2013 12:45:25
Views:
2150
Rating: Antwort:
 Nein
Thema:
alle csv in einem ordner nach dem selben schema in xls umwandeln

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:

 

' .mob nach xls 
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") 
    
' ordner durcharbeiten 
While Len(DATcsv) 
    DATxls = pfad & Left$(DATcsv, Len(DATcsv) - 4) & ".xls" 

    '   Debug.Print pfad & DATcsv 
    '   Debug.Print DATxls 

    '   erstes öffnen, getrennt nach zeichen 
    Workbooks.OpenText Filename:=pfad & DATcsv, local:=True, Origin:=xlMSDOS, StartRow:=1, Tab:=True, Semicolon:=True 

    '   speichern als .xls 
    ActiveWorkbook.SaveAs FileFormat:=".xls" 

    '   zweites öffnen, feste breite 
    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 

    '   A B kopieren 
    Columns("A:B").Select 
    Selection.Copy 
    '   einfügen 
    '   Windows("kx032.xls").Activate 
    '   Selection.Insert Shift:=xlToRight 

    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

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:

  '   A B kopieren 
    Columns("A:B").Select 
    Selection.Copy 
    '   einfügen 
    '   Windows("kx032.xls").Activate 
    '   Selection.Insert Shift:=xlToRight

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


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot alle csv in einem ordner nach dem selben schema in xls umwandeln
30.01.2013 12:45:25 Marc Golder
Solved