最近从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
答案 0 :(得分:3)
我知道您的问题是“为什么这不起作用”,但我认为您可能对其他解决方案感兴趣:There is a native VBA PrettyPrintXML。您需要通过单击“工具”---&gt;在VBA项目中添加对MSXML库的引用。 “引用...”然后选中Microsoft XML, v6.0
旁边的框(或您的Office / Windows版本中包含的任何版本)。
答案 1 :(得分:1)
请更改问题的标题,因为Excel VBA 能够使用WScript.Shell.Run,否则您将不会收到错误。
至于实际问题,这看起来像32位/ 64位问题。调查您正在调用的程序是否适合您的系统,以及它是否尝试加载正确的DLL。
问题不是文件权限,那么您将获得不同的状态代码。
答案 2 :(得分:0)
你应该使用一个没有空格的路径,像C:\ BTRTools&#39;这样简单。然后它应该工作。