安装2个版本后如何打开正确版本的Excel

时间:2018-09-27 21:00:23

标签: access-vba

我有一个导出到Excel的Access VBA脚本。它将打开工作簿,复制并格式化数据并保存工作簿。它已经工作了多年。它可以在Office 13的旧系统上运行,并且可以在Office 16的新系统上运行。现在,我试图在另一台刚刚安装的PC上运行该计算机-它已安装了Office 13,但可能还安装了Office新PC随附安装了16个版本。

当我手动打开Excel时,Excel 2013应该会打开。当我的Access代码运行并尝试打开Excel时,它似乎正在使用新版本-并且该代码停止工作,我认为是因为未设置Office 16帐户,并且在Excel打开时转到了Office 16激活屏幕而不是打开工作簿。

导出宏代码为

    Public Function Export_data(Optional table As String, Optional opt As String = "")

Set wb_app = CreateObject("Excel.Application")
wb_app.Visible = False
wb_app.displayalerts = False

path = DLookUp("[report folder]", "folder")

If opt <> "" Then
    FileName = path & "\" & opt & ".xlsm"
    Set wb_obj = wb_app.workbooks.Open(FileName)
    End If

错误发生在“ wb_app.workbooks.open”,错误为“无法获取Workbooks类的Open属性”。当我将.Visible设置为True并查看Excel在做什么时,它将进入Office 16帐户的激活屏幕。

如何更改VBA代码以将其定向到正确的Excel版本?

1 个答案:

答案 0 :(得分:0)

您可以使用文件末尾的两位数字办公版本来指定版本,例如:

Set wb_app = CreateObject("Excel.Application.14") 'Office 2010

您可以在HKEY_CLASSES_ROOT下的注册表中查看可用的内容。当然,您可以根据需要使用VBA查询注册表。