避免在未安装应用程序的情况下在计算机上find“无法find项目或库”

我创build了一个Excel文件,其中包含一个引用Powerpoint的模块。

我想在没有安装Powerpoint的服务器上使用这个文件中的其他模块(长篇故事…),但不能做到这一点,而不会产生可怕的无法find项目或库错误消息。

当然,我可以简单地创build另一个版本的犯规模块删除,这显然工作正常。
不过,有几个原因,我不想这样做,至less我不想维护多个版本,如果我可以帮助它。

有没有办法解决这个问题,例如让Excel忽略这个模块,除非被调用,否则不要去编译它?

我已经在这个主题上通过了41个post,没有find任何帮助,这让我怀疑我是不可能的。

有一些build议,迟绑定可能会有所帮助,但似乎没有任何区别。 这是有问题的代码:

Dim PowerPointApp As Object On Error Resume Next Set PowerPointApp = GetObject(class:="PowerPoint.Application") Err.Clear If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(class:="PowerPoint.Application") End If On Error GoTo 0 

其他模块都没有提及任何Powerpoint。

有没有办法解决这个问题,例如让Excel忽略这个模块,除非被调用,否则不要去编译它?

你可以尝试条件编译 ,这几乎就是它所做的。

打开项目属性对话框,并定义项目级条件编译常量:

项目属性对话框

现在用#If指令包装PowerPoint依赖模块:

 Option Explicit #If HAS_POWERPOINT = 1 Then '... entire module body ... #End If 

然后,在任何地方你都有一段调用条件编译模块的代码,用#If指令包围它:

 #If HAS_POWERPOINT = 1 Then MyProcedureThatRunsOffPowerPoint "foo", "bar", 42 #Else 'PowerPoint-dependent module doesn't exist, what do we do instead? #End If 

现在,当您将macros分发给未安装PowerPoint的计算机时,您将转到项目属性并将常量设置为0,然后重新编译该项目。