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

问题描述 投票:3回答:1

许多软件产品都包含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'的神奇常数或函数是什么?

vba excel-vba access-vba word-vba excel
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.