Avatar billede KimJon Nybegynder
21. august 2014 - 12:32 Der er 11 kommentarer

Åbning af dll i 64-bit version af Excel

Hej

Jeg har lavet følgende kode som virker på en 32-bit computer:

#If VBA7 And Win64 Then
    Declare PtrSafe Function Be06Calc Lib "Be10Eng.dll" (ByVal a As String, ByVal B As LongPtr, ByVal C As LongPtr) As String
    Declare PtrSafe Function Be06Keys Lib "Be10Eng.dll" (ByVal model As String, ByVal mem As String, ByRef max As Integer, ByVal lang As Integer) As String
#Else
    Declare Function Be06Calc Lib "Be10Eng.dll" (ByVal a As String, ByVal B As Long, ByVal C As Long) As String
    Declare Function Be06Keys Lib "Be10Eng.dll" (ByVal model As String, ByVal mem As String, ByRef max As Integer, ByVal lang As Integer) As String
#End If


Sub TEST()
    '-------------------------------------'
    ' Stien brugt
    Dim myPath As String
    Dim folderPath As String
   
    folderPath = Application.ActiveWorkbook.Path
    myPath = Application.ActiveWorkbook.FullName
   
    '-------------------------------------'
    'Oprettelse af diverse variable
    Dim objXML As MSXML2.DOMDocument
    Dim maxkey, max
    Dim cc As String, keys As String, keyxml As String, xmlFileName As String
    Set objXML = New MSXML2.DOMDocument
    objXML.async = False
    objXML.validateOnParse = False
    Static Bibliotek As String
           
    xmlFileName = folderPath & "\Be10\0indata.xml"
    objXML.Load (xmlFileName)

    Bibliotek = "C:\Program Files (x86)\SBi\Be10\7,12,8,12\"
    ChDir Bibliotek            ' Necessary to run Be06Calc()
   
    '-------------------------------------'
    ' Generating Be10 key-, log- and res-files

    cc = Be06Calc(xmlFileName, 1, 0)
    maxkey = 3500
    max = maxkey
    keys = String(maxkey, " ")
    keyxml = Be06Keys(objXML.xml, keys, max, 0)
    keys = ""
    Set objXML = Nothing
       
End Sub

Det scriptet skal gøre er at åbne "Be10Eng.dll" og køre de to funktioner på en xml-fil. Som sagt virker det i 32-bit, men jeg kan ikke få det til at virke på 64-bit, selvom jeg har brugt "PtrSafe" og "LongPtr".

Nogen der kan hjælpe?

Mvh
Kim
Avatar billede claes57 Ekspert
21. august 2014 - 14:50 #1
siger debug ikke noget med en fejlmarkering af, hvor det går galt?
Avatar billede KimJon Nybegynder
21. august 2014 - 14:53 #2
Jeg får en runtime 48 error, og erroren sker ved "cc = Be06Calc(xmlFileName, 1, 0)" altså den første funktion i dll'en.
Avatar billede claes57 Ekspert
21. august 2014 - 15:15 #3
jf http://www.registryquick.net/runtime/Fix-Runtime-error-48-How-to-Fix-Runtime-error-48-77048.html
1. Click Start-Run
2. Type in regsvr32 c:\windows\system32\dllfile
3. Re-start your computer

du skal så rette 2. til den korrekte sti og Be10Eng.dll
Avatar billede KimJon Nybegynder
22. august 2014 - 12:27 #4
Så har jeg prøvet det, men jeg kan ikke få lov til at registrere dll'en. Jeg får en meddelelse om at den er loadet, men der ikke er et entry-point.
Avatar billede claes57 Ekspert
22. august 2014 - 12:38 #5
Kan den komme fra et program, som skal installeres?
Avatar billede KimJon Nybegynder
22. august 2014 - 13:08 #6
Jeg tvivler virkelig, eftersom det virker på en 32-bit computer. Desuden er det et program så jeg har installeret på min computer som kører sin beregningskerne igennem denne dll og programmet virker fint på både 32-bit og 64-bit. Jeg tænker lidt på om det er fordi det er det forkerte antal byte som sendes gennem LongPrt istedet for Long. Det kan jo ske at beregningskernen er lavet til 32-bit og dermed forventer 4 byte. Men kan bare ikke finde en måde at få sendt 4 byte i 64-bit version, så kan ikke teste min teori.
Avatar billede claes57 Ekspert
22. august 2014 - 13:52 #7
prøv lige at kopiere dll'en fra en virkende maskine en gang til.
Det undrer mig mht entry-point fejl. Kan dll'en være 16-bit kode - det kan en 64'er jo ikke.
Avatar billede KimJon Nybegynder
22. august 2014 - 14:28 #8
Det virker heller ikke. Har prøvet koden på en 64-bit maskine med 32-bit office og der virker koden også.
Avatar billede KimJon Nybegynder
22. august 2014 - 15:49 #10
Det er version 7 (den nyeste) på alle maskiner jeg har prøvet koden på
Avatar billede claes57 Ekspert
22. august 2014 - 15:55 #11
Kontakt sbi.dk de må vide mere end vi andre om programmet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester