VBA Wijs een EDMVAULT5 instantie toe met de techniek "Late binding"

Nou, mijn minimale voorbeeld is in het spel gevallen!

Het tweede argument is dus inderdaad niet optioneel. 

Set eFile = eVault.GetFileFromPath(sFichier, eFolder)

 

De enige andere manipulatie die ik uitvoerde was een

regsrv32 "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS PDM\EdmInterface.dll"

 

wat het DLL-record mogelijk weer op orde heeft gebracht. EdmInterface.dll was noodzakelijkerwijs geladen,  anders had ik veel andere berichten gehad... Het valt nog te bezien hoe het zich gedraagt in een ePDM-taak!

Ik hou er niet van om af te sluiten zonder alles begrepen te hebben, maar hey HEEL ERG BEDANKT voor je hulp!

2 likes

Misschien is de PDM API-documentatie ook nep. Zelfs zonder "Late Binding" te doen, plaats ik altijd een argument na het pad van het geheugenbestand.

Dupliceren, ik kan niet verwijderen

1 like

Ik denk dat de documentatie de intentie van de ontwikkelaars laat zien, maar de implementatie in de functie is verkeerd.

Het tweede argument wordt door verwijzing aan de functie doorgegeven, waardoor deze er  schriftelijk toegang toe heeft. Voor alle duidelijkheid: dit argument geeft niet aan in welke map naar het bestand moet worden gezocht. Het stelt u eenvoudig in staat om het directory-object te herstellen waarin het bestand is gevonden. Maar als we op zoek zijn naar een bestand via het pad, kennen we de bovenliggende map al. Dit tweede argument is absoluut niet essentieel. Misschien kunnen we in sommige gevallen een paar regels code krijgen.

Aan de andere kant, wees voorzichtig als het bestand niet bestaat, de functie zal Null in het tweede argument plaatsen. In mijn minimale voorbeeld kan getFileFromPath de eFolder leegmaken door deze toe te wijzen aan Null en de rest laten crashen. Nou, dat was maar een voorbeeld.