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的主要内容,如果未能解决你的问题,请参考以下文章
从 Excel VBA 的 MS Access 表单中获取价值