Voor een bepaald VBA programmatje maak ik gebruik van een "common dialog box"-file (comdlg32.ocx).
Nu heb ik gemerkt dat op sommige PC's deze OCX niet aanwezig is.
Is het mogelijk van deze OCX file via het VBA programma te kopieren van een vaste plaats op het netwerk naar de harde schijf van de PC en deze automatisch the registeren via regsvr32???
Alvast bedankt.
SIR
Edit: by Weetgraag
titel aangepast registeren moet registreren zijn
Automatisch registreren van een .ocx file
- Snakehit
- Elite Poster
- Berichten: 806
- Lid geworden op: 05 mei 2004, 15:37
- Locatie: Izegem, Belgie
- Contacteer:
Volgens mij spreek je over VB6
je hebt Add Reference en Components
Je neemt component en zoekt tot aan Microsoft Common dialog en add je dan.
Je krijgt dan in uw toolbar dat icoontje erbij. Als je dan Make setup.exe doet
dan werkt dat op iedere computer. Let op dit is wel voor VB6 in VB5 moet je gaan volgens een ander principe.
Als ik uw post lees heb je dit al allemaal wrs gedaan. Dan ga ik ervan uit dat je probeert op een computer win 95.
Ik zal het straks eens uitproberen op 2 comp's.
Mvg,
Snakehit
je hebt Add Reference en Components
Je neemt component en zoekt tot aan Microsoft Common dialog en add je dan.
Je krijgt dan in uw toolbar dat icoontje erbij. Als je dan Make setup.exe doet
dan werkt dat op iedere computer. Let op dit is wel voor VB6 in VB5 moet je gaan volgens een ander principe.
Als ik uw post lees heb je dit al allemaal wrs gedaan. Dan ga ik ervan uit dat je probeert op een computer win 95.
Ik zal het straks eens uitproberen op 2 comp's.
Mvg,
Snakehit
-
- Elite Poster
- Berichten: 1158
- Lid geworden op: 03 maa 2004, 09:04
- Uitgedeelde bedankjes: 18 keer
- Bedankt: 16 keer
Via de ShellExecute() API moet dit wel lukken...
Ik heb ff Access geopend en je een voorbeeldje gemaakt:
Ik heb ff Access geopend en je een voorbeeldje gemaakt:
Code: Selecteer alles
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Const OCXPath As String = "c:\windows\system32\comdlg32.ocx"
Public Sub CopyAndRegisterComdlg32()
FileCopy "z:\networkdrive\blablabla\comdlg32.ocx", OCXPath
ShellExecute GetDesktopWindow, "open", "regsvr32", "/s " & Chr(34) & OCXPath & Chr(34), vbNullString, 0
End Sub
-
- Deel van't meubilair
- Berichten: 29849
- Lid geworden op: 28 okt 2003, 09:17
- Uitgedeelde bedankjes: 446 keer
- Bedankt: 1985 keer
Waarom... er staat toch ook geen "begin" function inSIR schreef:Moet er ni ergens een end function instaan???

De "Private Declare Function" is gewoon een prototype voor de functie in de DLL.
- Snakehit
- Elite Poster
- Berichten: 806
- Lid geworden op: 05 mei 2004, 15:37
- Locatie: Izegem, Belgie
- Contacteer:
Code: Selecteer alles
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
-
- Deel van't meubilair
- Berichten: 29849
- Lid geworden op: 28 okt 2003, 09:17
- Uitgedeelde bedankjes: 446 keer
- Bedankt: 1985 keer
Je bent de "declare" toch niet vergeten ?SIR schreef:Omdat ik een error krijg wanneer ik dit debug.
De error is i.v.m. "end function"
Kijk eens goed je code na... en zet ook je prototype bovenaan in je source. (dus niet tussen andere subs, al weet ik niet of dit in VB echt noodzakelijk was).
Wanneer ik het stukje programma in de VBA van mijn Excel invoeg, dan krijg ik problemen op andere plaatsen in mijn programma.
Nadat ik het stuk programma heb bijgevoegd begint Excel lastig te doen over deze lijn van code : "Dim MyDB As DataBase"
Hij geeft error : "can't find projet or library". Als ik het stukje programma terug delet werk alle OK.
Weet iemand raad?????
Bedankt,
SIR
Nadat ik het stuk programma heb bijgevoegd begint Excel lastig te doen over deze lijn van code : "Dim MyDB As DataBase"
Hij geeft error : "can't find projet or library". Als ik het stukje programma terug delet werk alle OK.
Weet iemand raad?????
Bedankt,
SIR
- Erik
- Elite Poster
- Berichten: 1321
- Lid geworden op: 15 sep 2002, 02:46
- Uitgedeelde bedankjes: 2 keer
- Bedankt: 18 keer
hallo,
om activex controls of COM (component object model) te registereren hebt ge een functie call naar "DllRegisterServer()" (registereren) en "DllUnregisterServer()" (registeratie opheffen) nodig.Mijn beperkte ervaring met visual basic zegt dat deze taal dat niet kan ? zeker ben ik hier niet van.
aaah nee ik heb even de "apiguide" geraadpleegt
altijd een goed idee om de "foutenafhandeling" in de code in te bouwen
indien interesse hier kan je de apiguide downloaden het biedt een overzicht van gebruik van de windows api functies in visual basic inclusief voorbeelden
om activex controls of COM (component object model) te registereren hebt ge een functie call naar "DllRegisterServer()" (registereren) en "DllUnregisterServer()" (registeratie opheffen) nodig.Mijn beperkte ervaring met visual basic zegt dat deze taal dat niet kan ? zeker ben ik hier niet van.
aaah nee ik heb even de "apiguide" geraadpleegt
Code: Selecteer alles
Declare Function DllRegisterServer Lib "ComCtl32.OCX" () As Long
Declare Function DllUnregisterServer Lib "ComCtl32.OCX" () As Long
Const ERROR_SUCCESS = &H0
' To register your OCX use this function:
If DllRegisterServer = ERROR_SUCCESS Then
MsgBox "Registration Successful"
Else
MsgBox "Registration Unsuccessful"
End If
' To unregister your OCX use this function:
If DllUnregisterServer = ERROR_SUCCESS Then
MsgBox "UnRegistration Successful"
Else
MsgBox "UnRegistration Unsuccessful"
End If
Code: Selecteer alles
on Error Resume Next
on Error GoTo myerrorhandler
Registered Linux user #286313
Alvast bedankt aan alle mensen die mij hier helpen.
Toch een klein vraagje Erik.
Is deze code om de dll effectief te registreren of om na te gaan of de dll geregistreerd is????
Ik veronderstel dat ik deze code moet uitvoeren nadat ik de dll naar de system32 folder van het desbetreffende toestel heb gekopiëerd???
Met veel dank,
SIR
Toch een klein vraagje Erik.
Is deze code om de dll effectief te registreren of om na te gaan of de dll geregistreerd is????
Ik veronderstel dat ik deze code moet uitvoeren nadat ik de dll naar de system32 folder van het desbetreffende toestel heb gekopiëerd???
Met veel dank,
SIR
Laat de bovenstaande vraag maar, ik heb het geprogrammeerd met de oplossing die Erik heeft geboden en alles werkt (kwa registreren toch) perfect zoals het moet.
Nu heb ik nog een klein ander probleempje.
Daar de system32 folder voor verschillende versies van Windows (2000, xp,...) op verschillende plaatsen staat(windows, WINNT,...), ben ik genoodzaakt de systemroot te gebruiken in mijn paths. Deze paths gebruik ik oa om te bepalen ofdat de .ocx file reeds aanwezig is in de system32 folder voordat ik kopiëer en registreer.
Is er een andere manier dan Environ() om deze systemroot te gebruiken???
Want kennelijk is de comdlg.ocx file reeds nodig om Environ() foutloos uit te voeren.
Mvg,
SIR
Nu heb ik nog een klein ander probleempje.
Daar de system32 folder voor verschillende versies van Windows (2000, xp,...) op verschillende plaatsen staat(windows, WINNT,...), ben ik genoodzaakt de systemroot te gebruiken in mijn paths. Deze paths gebruik ik oa om te bepalen ofdat de .ocx file reeds aanwezig is in de system32 folder voordat ik kopiëer en registreer.
Is er een andere manier dan Environ() om deze systemroot te gebruiken???
Want kennelijk is de comdlg.ocx file reeds nodig om Environ() foutloos uit te voeren.
Mvg,
SIR
-
- Administrator
- Berichten: 4143
- Lid geworden op: 15 sep 2002, 09:08
- Locatie: Belgium, Haacht
- Contacteer:
Ik ken niets van VBA, dus dit is mss een heel dom antwoord, maar toch ga ik het riskeren
.
Kan je niet gewoon het file copieren naar %systemroot%\system32 ? Aangezien dit een standard windows variabele is, heb je er (volgens mij) geen .osx files ofzo voor nodig.

Kan je niet gewoon het file copieren naar %systemroot%\system32 ? Aangezien dit een standard windows variabele is, heb je er (volgens mij) geen .osx files ofzo voor nodig.
Heb dit geprobeerd, maar krijg "path not found" errorSeNsEi Ze0n schreef:Ik ken niets van VBA, dus dit is mss een heel dom antwoord, maar toch ga ik het riskeren.
Kan je niet gewoon het file copieren naar %systemroot%\system32 ? Aangezien dit een standard windows variabele is, heb je er (volgens mij) geen .osx files ofzo voor nodig.
Ik geraak met Environ () aan de systemroot-path, maar doordat de Comdlg.ocx op dat moment nog niet aanwezig en geregistreed is maakt het programma daar problemen over.
M.a.w moet ik op een of andere manier aan de systemroot geraken zonder gebruik te maken van Environ().
- Erik
- Elite Poster
- Berichten: 1321
- Lid geworden op: 15 sep 2002, 02:46
- Uitgedeelde bedankjes: 2 keer
- Bedankt: 18 keer
hallo,
zou dat niet mogelijk zijn zijn met "ShGetSpecialFolderLocation()" of "GetWindowsDirectory()" ? ik denk dat ge beter eerst uitzoekt op welke windows de desbetreffende machine loopt want die directorys zijn anders op sommige windows versies (zoals je zelf al aangaf)
zou dat niet mogelijk zijn zijn met "ShGetSpecialFolderLocation()" of "GetWindowsDirectory()" ? ik denk dat ge beter eerst uitzoekt op welke windows de desbetreffende machine loopt want die directorys zijn anders op sommige windows versies (zoals je zelf al aangaf)
Registered Linux user #286313
- Erik
- Elite Poster
- Berichten: 1321
- Lid geworden op: 15 sep 2002, 02:46
- Uitgedeelde bedankjes: 2 keer
- Bedankt: 18 keer
aaah blij dat ik kon helpen die apiguide is idd een erg helpvol programma maar nie veel mensen kennen het ik wel toevallig
en de apiguide ismade in Belgium by the way

Registered Linux user #286313
voor .NET gebruikers:
www.pinvoke.net
Er is ook een add-in voor VS.NET (staat ergens op gotdotnet, moet er maar is achter zoeken
)
www.pinvoke.net
Er is ook een add-in voor VS.NET (staat ergens op gotdotnet, moet er maar is achter zoeken
