aiwa002
Goto Top

Xls to CSV mit makro

Hallo,

ich muss eine Excel Datei automatisch per Batch Job in eine CSV Datei umwandeln.
Natürlich das Ganze voll automatisch.
Das ganze soll über ein Makro in Excel umgesetz werden.

Hierzu habe ich bereits zwei Möglichkeiten mit Problemen

1. Möglichkeit

Problem:
Leider werden hier als Trennzeichne "," verwendet.
Es werden jedoch ";" als Trennzeichen benötigt!
Private Sub Workbook_Open()
    ChDir "c:\temp"  
    Workbooks.Open Filename:="c:\temp\test.xls"  
    ActiveWorkbook.SaveAs Filename:="c:\temp\test.csv", _  
    FileFormat:=xlCSV, CreateBackup:=False
End Sub


2. Möglichkeit

Problem:
Hier wird beim speichern der "Speichern unter" Dialog angezeigt,
Es sollte jedoch an dieser Stelle automatisch abspeichern.
Sub Sheet_Nach_CSVDatei()
'hierbei bleibt die Formatierung der Zellen so wie sie angezeigt wird.  
'Es muss alles so formatiert sein wie es später In der CSV sein soll.  
Dim vntFileName As Variant
Dim lngFn As Long
Dim rngRow As Excel.Range
Dim rngCell As Excel.Range
Dim strDelimiter As String
Dim strText As String
Dim strTextCell As String
Dim bolErsteSpalte As Boolean
Dim rngColumn As Excel.Range
Dim wksQuelle As Excel.Worksheet

strDelimiter = ";" 'deutsches CSV-Format: ";", Englishes CSV-Format: ","  

vntFileName = Application.GetSaveAsFilename("Test.csv", _  
    FileFilter:="CSV-File (*.csv),*.csv")  
If vntFileName = False Then Exit Sub

Set wksQuelle = ActiveWorkbook.Worksheets("Tabelle1")  'Beispiel oder: = ActiveSheet  

lngFn = FreeFile
Open vntFileName For Output As lngFn
 For Each rngRow In wksQuelle.UsedRange.Rows 
  strText = ""  
  bolErsteSpalte = True
  For Each rngCell In rngRow.Columns
   strTextCell = rngCell.Text 'Text! inclusive dem NumberFormat der Zelle  
   If InStr(1, strTextCell, strDelimiter, 0) Then '## wenn alle Zellen mit " " eingeschlossen werden sollen zeile auskommentieren  
    'bewirkt das Werte die den Delimiter enthalten (was eigentlich nicht sein sollte) mit " " eingeschlossen werden  
    strTextCell = Chr(34) & strTextCell & Chr(34)
   End If '##  
   If bolErsteSpalte Then
    strText = strTextCell
    bolErsteSpalte = False
   Else
    strText = strText & strDelimiter & strTextCell
   End If
  Next
  Print #lngFn, strText
 Next
Close lngFn
 
End Sub

Ich hoffe ihr könnt mir hier weiterhelfen!

Gruß
aiwa002

[Edit Biber] Zeilennummer drancodeformatiert. [/Edit]

Content-ID: 173895

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

Ausgedruckt am: 05.11.2024 um 19:11 Uhr

bastla
bastla 29.09.2011 um 11:43:15 Uhr
Goto Top
Hallo aiwa002!
Hier wird beim speichern der "Speichern unter" Dialog angezeigt,
Es sollte jedoch an dieser Stelle automatisch abspeichern.
Dann ersetze einfach die entsprechende Stelle im Code (ich hätte ja die Zeilennummer(n) angegeben, wenn Du eine passende verwendet hättest) durch
vntFileName = "c:\temp\test.csv"
Grüße
bastla
aiwa002
aiwa002 29.09.2011 um 11:55:11 Uhr
Goto Top
Hat super geklappt, Danke!

Kann manchmal so einfach sein face-wink