|  
                                            Hallo VBA Forum,
ich bin noch Anfänger in VBA und habe mir auf die schnelle aus dem Internet einen CSV to XLS Konverter gebastelt. Dieser funktioniert soweit ganz gut. Nach dem einlesen der Daten aus der CSV Datei möchte ich die
Daten gerne weiter verarbeiten. Ich bin somit auf ein Problem gestoßen, wobei die beim Konvertieren der CSV Datei ein Fehler auftritt. Ich möchte gerne in zwei Spalten den Punkt mit einem Komma ersetzen.
In Excel mit dem Makro funktioniert dies ganz gut. Nach dem kopieren dieses Code-Teil aus dem Makro in die
.vbs Datei geht es nicht mehr.
Hinweis: Ich rufe die CSV2XLS.vbs durch eine Batch Datei auf. Ziel ist es, für die eingelesenen Messdaten
in der CSV Datei einen automatisierten Excelimport zu realisieren mit dem dazugehörigen Diagramm.
Diese Zeile macht Probleme:
.ActiveSheet.Columns("B").Replace What:=".", Replacement:=",", SearchOrder:=xlByColumns, MatchCase:=True
****************************************************************************************************
'CSV2XLS.vbs 
 sOutPathDefault = "C:\Users\os\Desktop\00872" 'Angabe des Default-Zielpfades ohne abschließenden "\" 
 Set fso = CreateObject("Scripting.FileSystemObject") 
 If WScript.Arguments.Count = 0 Then 
    WScript.Echo "Keine Quelldatei angegeben!" 
    WScript.Quit(1) 
 End If 
 sInFile = WScript.Arguments(0) 
 If Not fso.FileExists(sInFile) Then 
    WScript.Echo sInFile & " nicht gefunden!" 
    WScript.Quit(1)    
 Else 'Pfad der Quelldatei zerlegen 
    Set oInFile = fso.GetFile(sInFile) 'für vollständige Dateiangaben aus Dateisystem 
    sInPath = oInFile.Path 'voller Quelldateipfad - wird zum Einlesen verwendet 
    sInFileName = Left(oInFile.Name, InstrRev(oInFile.Name, ".") - 1) 'Dateiname ohne Pfad und Typ 
    sInFileType = Mid(oInFile.Name, InstrRev(oInFile.Name, ".")) 'für Überprüfung auf CSV 
    Set oInFile = Nothing 
 End If 
 If WScript.Arguments.Count > 1 Then 
    sOutFilePath = WScript.Arguments(1) 'angegebenen Zielpfad verwenden 
 Else 
    sOutFilePath = sOutPathDefault 'kein Zielpfad angegeben - Default verwenden 
 End If 
 If Not fso.FolderExists(sOutFilePath) Then 'Zielpfad nicht vorhanden, daher ... 
    On Error Resume Next 
    fso.CreateFolder(sOutFilePath) '... zu erstellen versuchen 
    If Err.Number > 0 Then 
       WScript.Echo "Ungueltiger Zielpfad: " & sOutFilePath 
       WScript.Quit(1) 
    Else 
       On Error Goto 0 'Standardfehlerbehandlung wieder einschalten 
    End If 
 End If 
 If LCase(sInFileType) = ".csv" Then 'bei Typ ".csv" für Import in Temp-File kopieren 
    sInPathTemp = sOutFilePath & "\" & sInFileName & ".tmp" 'Temp-File im Zielverzeichnis anlegen (Annahme: dort Schreibrechte) 
    fso.CopyFile sInPath, sInPathTemp 
    sInPath = sInPathTemp 'Daten aus Temp-File lesen 
 End If 
 sOutPath = sOutFilePath & "\" & sInFileName & ".xls" 'Zieldateipfad erstellen 
 Do While InStr(sOutPath, "\\") 'vermeiden doppelter (mehfacher) "\" im Zieldateipfad (stört Excel offensichtlich nur beim Speichern) 
    sOutPath = Replace(sOutPath, "\\", "\") 
 Loop 
 Set oXL = CreateObject("Excel.Application") 
 With oXL 
    .Workbooks.OpenText sInPath, , , , , , , ,True 'Delimiter Comma = True 
    On Error Resume Next 
    .ActiveWorkbook.ActiveSheet.Cells.EntireColumn.AutoFit 'Optimale Spaltenbreite für alle Spalten setzen
	.ActiveSheet.Columns("D:AU").Delete 'nicht benötige Spalten löschen
	.ActiveSheet.Columns("B:C").NumberFormat = "@" 'Spalte mit den Druckwerten zuerst in Text wandeln
	.ActiveSheet.Columns("B").Replace What:=".", Replacement:=",", SearchOrder:=xlByColumns, MatchCase:=True
	
    .DisplayAlerts = False 'Keine Rückfrage beim Überschreiben schon vorhandener Zieldatei	
    .ActiveWorkbook.SaveAs sOutPath, -4143 'Speichern als .xls 
    If Err.Number > 0 Then 
       CleanUp 
       WScript.Echo sOutPath & " konnte nicht gespeichert werden!" 
       WScript.Quit(1) 
    End If 
 End With 
 CleanUp 
 
 Sub CleanUp 
 oXL.Quit 
 Set oXL = Nothing 
 If LCase(sInFileType) = ".csv" Then 
    On Error Resume Next 
    fso.DeleteFile sInPathTemp 'temporäre Import-Datei zu löschen versuchen 
 End If 
 End Sub
****************************************************************************************************
 
      |