Discussion:
Shell Command startet nicht wie erwartet
(zu alt für eine Antwort)
Jesaja
2013-01-10 01:18:39 UTC
Permalink
Hallo,

ich habe eine UTF-8 Datei, die ich mit dem GNU Tool iconv auf den deutschen Zeichensatz konvertieren möchte. Dies möchte ich aus VBA heraus machen, aber es gelingt nicht, weil wahrscheinlich immer wieder unnötigerweise ein Anführungszeichen zu Beginn des Kommandos eingefügt wird.

*** BEGIN CODE ***

Public Function DateiOeffnen()
Dim dlgDatei As Dialog
Dim Datei
Dim Kommando1 As String
Dim Kommando2 As String
Dim Kommando3 As String
Dim DateiNeu As String
Set sh = CreateObject("WScript.Shell")
'Dim RetVal

Set dlgDatei = Dialogs(wdDialogFileOpen)
With dlgDatei
If .Display() Then
' MsgBox "Die Datei '" & CurDir() & "\" & .Name & "' soll geöffnet werden."
Datei = CurDir() & "\" & .Name
Else
MsgBox "Der Benutzer hat abgebrochen.", vbCritical
End If
End With

DateiNeu = Left(Datei, Len(Datei) - 4) & "-UTF-8.csv"
Kommando1 = "C:\Progra~2\GnuWin32\bin\iconv.exe -f utf-8 -t windows-1252 "
Kommando2 = Chr(34) & Datei & Chr(34) & " > " & Chr(34) & DateiNeu & Chr(34)
Kommando3 = Kommando1 & Kommando2
sh.Run Kommando3, , True
DateiOeffnen = DateiNeu
End Function


*** END CODE ***

Überwachungsausdruck von Kommando3:

"C:\Progra~2\GnuWin32\bin\iconv.exe -f utf-8 -t windows-1252 "C:\temp\Anmeldungen_2012-12-03_19-33-52_MITSEMI.csv" > "C:\temp\Anmeldungen_2012-12-03_19-33-52_MITSEMI-UTF-8.csv""

Was mache ich hier falsch?

Viele Grüße,
Jesaja
Wolfram Jahn
2013-01-13 21:36:03 UTC
Permalink
...
Hi, was passiert denn, und was nicht?
Solange Du keine weitere Auskunft zu den Symptomen gibst ist es ein
Stochern im Nebel. Wir sitzen ja nicht neben Dir am Rechner...

- Entsteht eine Ausgabedatei?
- Gibts Fehlermeldungen?
- Was passiert, wenn Du das Kommando3 von Hand eingibst?


Wolfram
Rainer H. Rauschenberg
2013-01-14 11:59:30 UTC
Permalink
Post by Jesaja
Set sh = CreateObject("WScript.Shell")
Kommando1 = "C:\Progra~2\GnuWin32\bin\iconv.exe -f utf-8 -t windows-1252 "
Kommando2 = Chr(34) & Datei & Chr(34) & " > " & Chr(34) & DateiNeu & Chr(34)
Kommando3 = Kommando1 & Kommando2
sh.Run Kommando3, , True
Das erscheint mir komisch. Ich hätte da eher sowas wie

Shell Kommando3, 1

erwartet. Mir erschließt sich nicht, warum man da noch eine
Wsh-Komplikationsschicht dazwischenziehen soll.

Loading...