MS Access:打开2016 Excel和getObject

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MS Access:打开2016 Excel和getObject相关的知识,希望对你有一定的参考价值。

在过去的几个小时里,我一直在努力解决这个问题,并尝试了多种解决方案无济于事。我正在尝试在MS Access中打开excel 2016(64位)报告,默认的Excel是2003,现在必须保持这种状态。我的代码是:

Dim xlTmp As excel.Application
Shell ("C:Program FilesMicrosoft Office
ootOffice16EXCEL.exe")
Set xlTmp = GetObject(, "Excel.Application")

这段代码完全符合我的要求,只有当我在调试模式中踩到时,因为excel在尝试抓取对象之前并没有完全启动。如果正常运行会引发错误:

运行时错误'429'ActiveX组件无法创建对象

我尝试了以下一些解决方案无济于事:

Function OpenExcel()
   x = Shell("C:Program FilesMicrosoft Office
ootOffice16EXCEL.exe", vbNormalFocus)
   OpenExcel = x
End Function

Function GetOpenExcel() As excel.Application
    Set GetOpenExcel = GetObject(, "Excel.Application.16")

TryAgain:
    On Error GoTo NoExcel
    Set xlTmp = GetObject(, "Excel.Application.16")
    On Error GoTo 0
    xlTmp.Visible = True
    Set GetOpenExcel = xlTmp
Exit Function

NoExcel:
    Resume TryAgain
End Function

还有这个

Set ie = Nothing
cnt = 0

cnt = xlTmp.Windows.count
sh = Shell("C:Program FilesMicrosoft Office
ootOffice16EXCEL.exe",     vbNormalFocus)
Do Until xlTmp.Windows.count = cnt + 1
Loop
Set xlTmp = GetObject("excel.Application.16")
Set sh = xlTmp.Windows(xlTmp.Windows.count - 1)

我也尝试过转换我的参考文献,有点困惑,但这是我现在所拥有的:MS Access References

在此先感谢,任何帮助将不胜感激。

答案

只是用

Set xlTmp = CreateObject("Excel.Application")

而不是GetObject

UPDATE

这段代码对我有用,我有默认2016而不是默认2010:

Private Sub Command0_Click()
Dim xlTmp As Object
Shell "D:Program Files (x86)Microsoft Office 2010Office14EXCEL.EXE", vbNormalFocus

TryAgain:
    On Error GoTo NoExcel
    Set xlTmp = GetObject(, "Excel.Application")
    On Error GoTo 0
    'here I received correct xlTmp
Exit Sub

NoExcel:
    Resume TryAgain
End Sub

以上是关于MS Access:打开2016 Excel和getObject的主要内容,如果未能解决你的问题,请参考以下文章

使用VB将数据从Excel导入Ms Access

将 MS Excel 链接到 MS Access 查询

更新 MS - 通过 MS-Excel 单元格访问字段

从 Excel VBA 的 MS Access 表单中获取价值

在 Excel 中显示 MS-Access 记录的富文本格式

将 Excel 电子表格导入 MS Access 数据库