Я боролся с этой проблемой последние несколько часов и пробовал несколько решений, но безрезультатно.
Я пытаюсь открыть отчет Excel 2016 (64-разрядный) в MS Access, по умолчанию Excel 2003 и должен оставаться таким же на данный момент.
Мой код:
Dim xlTmp As excel.Application
Shell ("C:\Program Files\Microsoft Office\root\Office16\EXCEL.exe")
Set xlTmp = GetObject(, "Excel.Application")
Этот код делает именно то, что мне нужно, только когда я вхожу в режим отладки, потому что Excel не запускается полностью, пока не попытается захватить объект.
При нормальном запуске выдает ошибку:
Ошибка времени выполнения '429'
Компонент ActiveX не может создать объект
Я пробовал некоторые из следующих решений, но безрезультатно:
Function OpenExcel()
x = Shell("C:\Program Files\Microsoft Office\root\Office16\EXCEL.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 Files\Microsoft Office\root\Office16\EXCEL.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
Заранее спасибо, и любая помощь будет оценена.