Opstarten van een Excel file

DutchOirs

Gebruiker
Lid geworden
30 sep 2009
Berichten
935
Ben bezig met overstap van excel 2003 naar excel 2019.
nu gebruik ik verschillende library's met opstarten onder Module.
Maar in Excel 2003 zijn dit andere dan in 2019.
Nu kan men je Excel versie opvragen.

Dacht slim te zijn en dit in ThisWorkBook / Workbook_open op te vragen.
Vervolgens te verwijzen in de module naar de keuze.
Maar begrijp inmiddels dat bij het opstarten excel eerst de module leest.

Hoe zou ik dit kunnen aanpakken?

Iemand een idee?

Already many thanks.

Dutch
 
Geen idee wat je precies bedoelt.
Zoiets?
 

Bijlagen

Ha die Edmoor,

Excelversie is in beidde op te vragen,

In 2003 is het Versie 11 en in 2019 is het 16

Maar in de module kan je geen sub aanmaken om een keuze te maken.
b.v.
If ExcelVersie = 11 then
load lib 2003
elseif ExcelVersie = 16 Then
load lib 2019
end if
 
Het zijn ook geen getallen maar strings.
Ik zou er dan zoiets van maken:
Code:
Private Sub Workbook_Open()
    Select Case Application.Version
        case "11.0": load lib 2003
        case "16.0": load lib 2019
    End Select
End Sub
 
Laatst bewerkt:
en dit kan ook onder een module?

Ga er vanuit dat de bibliotheken inlezen onder een module moet.

Dacht altijd dat bij het opstarten, hij eerst door de module(s) inleest en vervolgens ThisWorkbook.

Een Private sub module_Open() werkt dus niet

ga het proberen thanks
 
Laatst bewerkt:
Wel enige tijd bezig geweest, maar helaas loop tegen problemen op
Had onder Module het volgende neergezet:

Code:
 #If Versie = "16" Then         ' voor UserForm PDF maken Excel 2019
'    public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, ByVal lpWindowName As Any) As LongPtr
'    public Declare PtrSafe Function SetForegroundWindow Lib "user32" (ByVal hWnd As LongPtr) As LongPtr
'    public Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwflags As Long, ByVal dwExtraInfo As Long)
 #Else                          ' voor UserForm PDF maken Excel 2003
   MsgBox "#22222"
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Public Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
 '   Public Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
 #End If '
Heb onder 'Else' een msgbox gezet om te checken of hij er wel doorheen liep.
Helaas dit kan niet, het is buiten een procedure.

Maar hoe check ik dit nu?
 
Wellicht handig om ook de betreffende problemen er bij te vermelden.
Daarnaast is het geen "16" maar "16.0".
Controleren op een 64i bit office doe je zo:
Code:
#If VBA7 Then
 
is inderdaad 16.0, klopt edmoor, was het net aan het opzoeken

geeft foutmelding omdat ik een msgbox erbij had gezet om te checken of hij ook door de gewenste lus ging
 
#If is een compiler directive.
Daar kan je geen MsgBox in gebruiken.
 
Bijvoorbeeld dit in ThisWorkbook:
Code:
Private Sub Workbook_Open()
   #If VBA7 Then
      vBIT = 64
   #Else
      vBIT = 32
   #End If
   MsgBox "Office = " & vBIT & " Bit"
End Sub
 
Of
Code:
Sub Test()
    #If Win64 Then
        OfficeBitness = "64-bit"
    #Else
        OfficeBitness = "32-bit"
    #End If
    MsgBox OfficeBitness
End Sub
 
Terug
Bovenaan Onderaan