Referentie naar Bibliotheek Access

Status
Niet open voor verdere reacties.

reneemettrie

Terugkerende gebruiker
Lid geworden
1 aug 2006
Berichten
1.233
Had hier al eens eerder een vraag gesteld over een referentie naar de bibliotheek van Excel (in VBA), maar vind de posts niet terug.

Bedoeling is de referentie aan te passen als je van Office versie verandert.

Had hiervoor 2 oplossingen (de eerste van mezelf, de tweede van Octafish, waarvoor dank :)

In beide versies wordt met de environ functie gewerkt.

Op mijn eigen PC, Office 2016, werkt dit.
Maar nu probeer ik het op een 2010 toestel en de subs blokkeren op de Environ functie (ook op de date functie) met als melding dat de bibliotheek mankeert.

Hoe kan ik dat oplossen?

Sub test()

Code:
Dim OfficeVersion As String, ExcelPath As String

 

'If References("Excel").IsBroken Then

    References.Remove References("Excel")

    ExcelPath = Left(Environ("path"), InStr(1, Environ("path"), ";") - 1) & "Excel.exe"

'Debug.Print ExcelPath

    References.AddFromFile ExcelPath

'End If

 

Debug.Print Environ("path")

'Dit geeft:

'C:\Program Files (x86)\Microsoft Office\Root\Office16\;C:\Program Files (x86)\Lenovo\FusionEngine;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Common Files\lenovo\easyplussdk\bin;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Skype\Phone\;C:\Users\Renée\AppData\Local\Microsoft\WindowsApps;;C:\Program Files (x86)\Microsoft Office\root\Client

 

 

End Sub

 

Sub IdemMetArray()

    Dim ExcelPath As String, arr

    arr = Split(Environ("path"), ";")

    ExcelPath = arr(LBound(arr)) & "Excel.exe"

    Debug.Print ExcelPath

    ExcelPath = arr(0) & "Excel.exe"

    Debug.Print ExcelPath

End Sub

Update:
Heb het nu zo aangepast:
Code:
VBA.Left(VBA.Interaction.Environ("path"), InStr(1, VBA.Interaction.Environ("path"), ";") - 1) & "Excel.exe"
Nu geen fout meer op bovenstaande lijn,
maar nu blokkeert hij op deze:
Code:
References.Remove Application.References("Excel")
met de melding: fout 48 - fout bij laden DLL
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan