Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wie umwandeln 32 auf 64 BIT

Wie umwandeln 32 auf 64 BIT
02.11.2022 17:44:48
walter
Guten Abend zusammen,
ich musste mir das neue Office installieren, habe aber 1früher alles auf 32 BIT gehabt.
Was muss ich tun um auf 64 BIT zu ändern.
Beispiel:
Private Declare Function FindWindow Lib "user64" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
gruß
walter
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie umwandeln 32 auf 64 BIT
02.11.2022 18:23:57
Fred
Hallo Walter,

Private Declare PtrSafe Function

AW: Wie umwandeln 32 auf 64 BIT
02.11.2022 18:37:09
Nepumuk
Hallo walter,
so:
Private Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function GetSystemMenu Lib "user32.dll" Alias "GetSystemMenu" (ByVal hwnd As LongPtr, ByVal bRevert As Long) As LongPtr
Private Declare PtrSafe Function RemoveMenu Lib "user32.dll" Alias "RemoveMenu" (ByVal hMenu As LongPtr, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Nur PtrSafe einfügen genügt nicht, da musst du auch die Parameter anpassen. Da gibt es nämlich neue Datentypen.
Gruß
Nepumuk
Anzeige
AW: Wie umwandeln 32 auf 64 BIT
02.11.2022 19:08:54
walter
Hallo Fred und Nepumuk,
herzlichen Dank für die Info.
Was mache ich den wenn ich die Datei auf einem 32 BIT Rechner aktiviere ?
Was muss noch geändert werden um 32 und 64 BIT abzusichern ?
Danke im Voraus
gruß walter
AW: Wie umwandeln 32 auf 64 BIT
02.11.2022 19:15:40
Nepumuk
Hallo walter,
ab Excel 2013 verträgt es die gezeigten Deklarationen auch in 32Bit.
Gruß
Nepumuk
Anzeige
Danke Nepumuk -)
02.11.2022 19:34:52
walter
Sorry, leider nochmal Fehler...
02.11.2022 19:42:10
walter
Hallo Nepumuk,
leider nochmal Fehler:
Private Declare PtrSafe GetSystemMenu Lib "user32" (ByVal nIndex As Long) As Long
'Bildschirmauflösung des Bildschirms an dem die Userform erstellt wurde
Const LHorizontale As Long = 1024 ' 640 '1024 '1680
Const LVertikal As Long = 768 ' 480 ' 576 '1050
Private Declare Ptrsafe Beep Lib "Kernel32" (ByVal Fq As Long, ByVal Tm As Long) As Long
gruß walter
Anzeige
Erledigt, Sorry ! Function fehlte !
02.11.2022 19:43:35
walter
wenn erledigt, dann geschlossen. owT
02.11.2022 22:12:27
Rudi
Sorry. -)
02.11.2022 22:49:22
walter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

32 Bit auf 64 Bit umstellen in Excel VBA


Schritt-für-Schritt-Anleitung

Um von 32 Bit auf 64 Bit in Excel VBA umzustellen, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Deklarationen anpassen: Füge das Schlüsselwort PtrSafe zu deinen Declare-Funktionen hinzu. Beispiel:

    Private Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
  3. Datentypen ändern: Verwende LongPtr anstelle von Long für Zeiger. Dies ist wichtig, um die 64-Bit Kompatibilität zu gewährleisten.

    Private Declare PtrSafe Function GetSystemMenu Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal bRevert As Long) As LongPtr
  4. Kompatibilität prüfen: Stelle sicher, dass deine Funktionen sowohl in 32-Bit als auch in 64-Bit funktionieren.

  5. Speichere und teste: Speichere deine Änderungen und teste das Makro in einer 64-Bit Excel-Version.


Häufige Fehler und Lösungen

  • Fehler: "Typkonflikt": Stelle sicher, dass alle verwendeten Datentypen korrekt sind. In 64-Bit muss Long in LongPtr geändert werden.

  • Fehler: "Funktion nicht gefunden": Überprüfe, ob die Funktion korrekt deklariert wurde. Achte auf die Schreibweise der Lib und der Aliasnamen.

  • Lösung für 32/64-Bit Konflikte: Um sicherzustellen, dass dein Code sowohl auf 32-Bit als auch auf 64-Bit funktioniert, kannst du bedingte Kompilierungsanweisungen verwenden:

    #If VBA7 Then
       Private Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
    #Else
       Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    #End If

Alternative Methoden

Falls Du keine Änderungen im VBA-Code vornehmen möchtest, kannst Du folgende Alternativen in Betracht ziehen:

  • Excel auf 64 Bit umstellen: Installiere die 64-Bit-Version von Excel, falls Du noch die 32-Bit-Version verwendest. Achte darauf, dass alle Add-Ins und Makros ebenfalls 64-Bit kompatibel sind.

  • Verwendung von COM-Objekten: Falls Du externe Bibliotheken verwendest, stelle sicher, dass diese ebenfalls in 64-Bit verfügbar sind.


Praktische Beispiele

Hier sind einige praktische Beispiele, um die Umstellung von 32 Bit auf 64 Bit zu verdeutlichen:

  1. FindWindow-Funktion:

    #If VBA7 Then
       Private Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
    #Else
       Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    #End If
  2. GetSystemMenu-Funktion:

    #If VBA7 Then
       Private Declare PtrSafe Function GetSystemMenu Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal bRevert As Long) As LongPtr
    #Else
       Private Declare Function GetSystemMenu Lib "user32.dll" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    #End If

Tipps für Profis

  • Verwende LongPtr immer: Wenn Du mit Windows-API-Funktionen arbeitest, ist es wichtig, LongPtr für Zeiger zu verwenden. Dies stellt sicher, dass Dein Code in beiden Bit-Versionen korrekt funktioniert.

  • Regelmäßige Tests durchführen: Teste Deinen Code regelmäßig in beiden Excel-Versionen, um sicherzustellen, dass alles reibungslos funktioniert.

  • Dokumentation nutzen: Nutze die Microsoft-Dokumentation, um sicherzustellen, dass Du die richtigen Datentypen und Funktionsaufrufe verwendest.


FAQ: Häufige Fragen

1. Wie finde ich heraus, welche Excel-Version ich habe?
Du kannst die Excel-Version überprüfen, indem Du auf Datei > Konto gehst und dort die Informationen zu deiner Excel-Installation findest.

2. Was muss ich tun, wenn ich die Datei auf einem 32-Bit-Rechner aktiviere?
Stelle sicher, dass Du die Funktionen so deklariert hast, dass sie in beiden Bit-Versionen funktionieren. Verwende die bedingte Kompilierung, um die Kompatibilität zu gewährleisten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige