5 Stimmen

Excel VBA Fehler bei Verwendung von WScript.Shell.Run

Nach dem kürzlichen Upgrade von Excel 2010 auf Excel 2013 habe ich ein benutzerdefiniertes Add-In (.xlam) in das Verzeichnis Application.LibraryPath (C:\Program Files\Microsoft Office 15\root\office15\Library\BTRTools) verschoben. Es gibt ein bisschen Code, der eine ausführbare Datei (exe) startet (die sich im Unterverzeichnis des Add-Ins befindet). Seit dem Upgrade/Umzug erhalte ich jedoch einen Fehler:

PrettyPrintXml.exe - Anwendungsfehler

Die Anwendung konnte nicht korrekt gestartet werden (0xc000007b). Klicken Sie auf OK, um die Anwendung zu schließen.

Ich bin mir ziemlich sicher, dass es an den Dateiberechtigungen liegt. Ich habe mir explizit Berechtigungen mit vollen Rechten für den \Library-Ordner (und alle Unterordner) hinzugefügt. Beachten Sie, dass ich dies selbst mit Excel 2010 (Ordner unter C:\Program Files (x86)\Microsoft Office\Office14\Library) tun musste, um alles zum Laufen zu bringen.

Trotz all dem stecke ich immer noch fest und kann die exe-Datei nicht starten. Irgendwelche Ideen/Vorschläge, wie das funktionieren könnte?

Der Code ist ziemlich standard:

Öffentliche Sub RunShellExecute(sFile As String, Optional params As String = "", Optional wait As Boolean = False)

Dim wsh As Object: Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = wait
Dim windowStyle As Integer: windowStyle = 1
Dim exe As String: exe = IIf(Left(sFile, 1) <> """", """" & sFile & """", sFile)
Dim exeParams As String: exeParams = IIf(params <> "", " " & params, "")
Dim errorCode As Integer: errorCode = wsh.Run(exe & exeParams, windowStyle, waitOnReturn)

If errorCode = 0 Then
    '// MsgBox "Erledigt! Kein Fehler zu melden."
Else
    MsgBox "Programm wurde mit Fehlercode " & errorCode & " beendet."
End If

End Sub

3voto

Blackhawk Punkte 5802

Ich weiß, deine Frage lautet "Warum funktioniert das nicht", aber ich dachte, du könntest an einer alternativen Lösung interessiert sein: Es gibt ein natives VBA PrettyPrintXML. Du musst einen Verweis auf die MSXML-Bibliothek in deinem VBA-Projekt hinzufügen, indem du auf "Extras" ---> "Verweise..." klickst und dann das Kästchen neben Microsoft XML, v6.0 (oder welche Version auch immer in deiner Office/Windows-Version enthalten ist) ankreuzt.

1voto

Anonymous Punkte 151

Bitte ändern Sie den Titel Ihrer Frage, denn Excel VBA kann WScript.Shell.Run verwenden, sonst würden Sie keinen Fehler erhalten.

Was das eigentliche Problem betrifft, sieht es nach einem 32-Bit / 64-Bit-Problem aus. Überprüfen Sie, ob das Programm, das Sie aufrufen, für Ihr System geeignet ist und ob es versucht, die Richtigen DLLs zu laden.

Das Problem sind nicht die Dateiberechtigungen, sonst würden Sie einen anderen Statuscode erhalten.

0voto

Marijan Punkte 1

Sie sollten einen Pfad ohne Leerzeichen verwenden, etwas Einfaches wie 'C:\BTRTools'. Dann sollte es funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X