MS Access: Açık 2016 Excel ve getObject

oy
0

Son birkaç saat boyunca bu sorunla mücadele ve boşuna birden çözümler çalıştı oldum. MS Access, Excel 2003 ve şimdilik bu şekilde kalmak zorundadır varsayılan bir excel 2016 (64-bit) raporu açmak çalışıyorum. Benim kodudur:

Dim xlTmp As excel.Application
Shell (C:\Program Files\Microsoft Office\root\Office16\EXCEL.exe)
Set xlTmp = GetObject(, Excel.Application)

Bu kod Ben nesneyi kapmak için çalışmadan önce excel tam olarak başlamasına doesnt çünkü hata ayıklama modunda arasında adım adım am sadece ne istediğinizi tam olarak yapar. Normalde çalıştırırsanız bir hata kusar:

nesneyi oluşturamıyor Çalışma zamanı hatası '429' ActiveX bileşeni

Ben boşuna aşağıdaki çözümlerden bazıları denedim:

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

Ve bu

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)

Ben de biraz kafa karışıklığı ile, benim referanslar etrafında biraz anahtarlama çalıştı, ancak burada şu anda ne var ettik: MS Access Referansları

peşin ve herhangi bir yardım teşekkürler mutluluk duyacağız.

Oluştur 08/11/2018 saat 11:19
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Sadece kullan

Set xlTmp = CreateObject("Excel.Application")

yerine GetObject

GÜNCELLEŞTİRME

Bu kod ben varsayılan 2016 ve 2010 varsayılan değil, benim için çalıştı:

Private Sub Command0_Click()
Dim xlTmp As Object
Shell "D:\Program Files (x86)\Microsoft Office 2010\Office14\EXCEL.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
Cevap 08/11/2018 saat 11:29
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more