Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

64bit & keine Ahnung

64bit & keine Ahnung
21.08.2023 07:34:08
depi1962
Moin,

unser Excel wird von 32bit auf 64bit demnächst umgestellt. Ich teste bereits in der 64bit 2019-er Version unsere Excel-Tabellen aus und dabei sind zwei Laufzeitfehler (Beispiel 1 und 2) auffällig. Ich habe absolut keine Ahnung wozu das nötig ist und bräuchte mal Hilfe

Gefunden habe ich ein Beispiel, um 32- und 64bit Code ausführen zu lassen..

#if Vba7 then 

' Code is running in the new VBA7 editor
#if Win64 then
' Code is running in 64-bit version of Microsoft Office
#else
' Code is running in 32-bit version of Microsoft Office
#end if
#else
' Code is running in VBA version 6 or earlier
#end if

#If Vba7 Then
Declare PtrSafe Sub...
#Else
Declare Sub...
#EndIf


aber wie kann ich dies umsetzen ?

Beispiel 1

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


Beispiel 2

Declare Function SHGetPathFromIDList Lib "shell32.dll" _

Alias "SHGetPathFromIDListA" _
(ByVal pidl As Long, ByVal pszPath As String) As Long

'Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long


Besten Dank

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
64bit & keine Ahnung
21.08.2023 08:31:50
volti
Hallo Depi,

um 64-Bit Funktionen zu verwenden, müssen alle Declares um das Schlüsselwort PtrSafe erweitert werden und in Deinem Code einige Variablen und Strukturen u.a. auf LongPtr umgestellt werden.

Die 64-Bit-Funktionen funktionieren in 64-Bit und 32-Bit (VBA7).
Wenn Du zusätzlich auch den Betrieb im alten 32-Bit-System (VBA6) noch brauchst, können die Funktionen wie in Deinem Beispiel per Compilerschalter getrennt werden. Ansonsten reichen die 64-Bit-Funktionen aus.

Hier in diesem API-Viewer kannst Du bei Bedarf alle möglichen Funktionen nachschauen.
https://www.clever-excel-forum.de/Thread-API-Viewer

Hier sind Deine drei Beispiele mal entsprechend umgesetzt....



Private Declare PtrSafe Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As LongPtr, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As LongPtr

Private Declare PtrSafe Function SHGetPathFromIDList Lib "Shell32.dll" Alias "SHGetPathFromIDListA" ( _
ByVal pidl As LongPtr, ByVal pszPath As String) As Long

Private Declare PtrSafe Function SHBrowseForFolder Lib "Shell32.dll" Alias "SHBrowseForFolderA" ( _
lpBrowseInfo As BROWSEINFO) As LongPtr

Type BROWSEINFO
hOwner As LongPtr
pidlRoot As LongPtr
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As LongPtr
lParam As LongPtr
iImage As Long
End Type


Falls Du Schwierigkeiten haben solltest, lade mal Deine Mappe hoch....

viele Grüße
Karl-Heinz
Anzeige
64bit & keine Ahnung
21.08.2023 15:17:04
depi1962
Besten Dank für deine Hilfe Karl-Heinz
hat alles super funktioniert :-)

Gruß Detlef

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige