5

最近从 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 文件。关于如何完成这项工作的任何想法/建议?

代码非常标准:

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
4

3 回答 3

3

我知道您的问题是“为什么这不起作用”,但我认为您可能对替代解决方案感兴趣: 有一个本机 VBA PrettyPrintXML。您需要通过单击“工具”--->“参考...”在 VBA 项目中添加对 MSXML 库的引用,然后选中旁边的框Microsoft XML, v6.0(或您的 Office/Windows 版本中包含的任何版本) .

于 2013-10-25T20:06:56.093 回答
1

请更改您的问题的标题,因为 Excel VBA能够使用 WScript.Shell.Run,​​否则您不会收到错误消息。

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

问题不在于文件权限,那么您将获得不同的状态代码。

于 2015-09-13T15:08:04.243 回答
0

你应该使用一个没有空格的路径,比如'C:\BTRTools'。然后它应该工作。

于 2015-04-13T08:21:59.103 回答