VBA如何确定当前正在运行的软件产品..?

时间:2018-01-03 21:39:45

标签: vba excel-vba access-vba word-vba excel

许多软件产品都包含VBA。这当然包括Microsoft Office,但是有许多第三方产品也选择包含VBA。一个快速的谷歌搜索出现了AutoCad,WordPerfect,PowerTerm和ScriptWorx等名称。

如果希望使用#If /#EndIf指令设计Sub或Function以在多个环境中工作,VBA如何检测它当前正在运行哪个.. ??

这与检测是否安装了产品略有不同,在这种情况下可以使用CreateObject()和ErrorHandler。此外,检查References集合不是确定的,因为VBA项目可能有多个对当前产品以外的产品的引用。例如,Access项目可能引用Excel,反之亦然(我的许多人都这样做。)

说,我想编写一个返回当前文件名称的函数。以下是使用Access和Excel作为示例的一些伪代码。

Public Function CurrentFilename() As String
    #If EnvironmentName="Access" Then
        CurrentFilename = Access.Application.CurrentProject.Fullname
    #ElseIf EnvironmentName="Excel" Then
        CurrentFilename = Excel.Application.ActiveWorkbook.Fullname
    #Else
        MsgBox "Current VBA software environment is not recognized."
    #End If
End Function

这可能吗??如果是这样,替换'EnvironmentName'的神奇常数或函数是什么??

1 个答案:

答案 0 :(得分:2)

我相信你最好的选择是Application.Name财产。我不能确认它适用于所有VBA实现,但它似乎与MS产品一致。 来自MSDN参考:https://msdn.microsoft.com/en-us/library/office/aa221371(v=office.11).aspx