Excel VBA错误使用WScript.Shell.Run

最近从Excel 2010升级到Excel 2013后,我将一个自定义加载项(.xlam)移动到新的Application.LibraryPath目录(C:\ Program Files \ Microsoft Office 15 \ root \ office15 \ Library \ BTRTools)。 有一些代码启动一个可执行(exe)文件(位于加载项的子目录中)。 但是,由于升级/移动,我没有得到一个错误:

PrettyPrintXml.exe - Application Error

The application was unable to start correctly (0xc000007b). Click OK to close the application.

我显然相当确信这是文件权限。 我已经明确地将自己的权限添加到\ Library文件夹(和所有子文件夹)的完整权限。 请注意,即使使用Excel 2010(C:\ Program Files(x86)\ Microsoft Office \ Office14 \ Library中的文件夹),我也必须这样做才能使事情顺利进行。

但是,毕竟,我仍然卡住,无法启动exe文件。 任何想法/build议如何使这项工作?

代码很标准:

 Public 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 "Done! No error to report." Else MsgBox "Program exited with error code " & errorCode & "." End If End Sub 

我知道你的问题是“为什么不这样做”,但我想你可能会对另一种解决scheme感兴趣: 有一个本地的VBA PrettyPrintXML 。 您需要通过单击“工具”—>“引用…”在VBA项目中添加对MSXML库的引用,然后选中Microsoft XML, v6.0旁边的checkbox(或者包含您的任何版本Office / Windows版本)。

请改变你的问题的标题,因为Excel VBA能够使用WScript.Shell.Run,​​否则你不会得到你的错误。

至于实际的问题,这看起来像一个32位/ 64位的问题。 调查您所调用的程序是否适合您的系统,以及是否尝试加载正确的DLL。

问题不是文件权限,那么你会得到一个不同的状态代码。

你应该使用一个没有空格的path,比如'C:\ BTRTools'。 那么它应该工作。