Code für 64-Bit Systeme aktualisieren
Schritt-für-Schritt-Anleitung
-
Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
-
Suche nach Declare-Anweisungen: Finde alle Declare-Anweisungen in deinem Code, die nicht PtrSafe deklariert sind.
-
Aktualisiere die Declare-Anweisungen: Füge PtrSafe zur Declare-Anweisung hinzu. Beispiel:
Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" _
Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
-
Ersetze Long durch LongPtr: Wenn du Pointer verwendest, ändere die Rückgabewerte von Long auf LongPtr.
-
Überprüfe den Code auf Kompatibilität: Stelle sicher, dass der gesamte Code mit 64-Bit kompatibel ist.
Häufige Fehler und Lösungen
-
Fehler beim Kompilieren: Wenn du die Fehlermeldung „Fehler beim Kompilieren: Der Code in diesem Projekt muss für die Verwendung auf 64-Bit-Systemen aktualisiert werden“ erhältst, überprüfe, ob alle Declare-Anweisungen PtrSafe enthalten.
-
Sub oder Function nicht definiert: Dies kann auftreten, wenn die Funktion, die du aufrufen möchtest, nicht als PtrSafe deklariert ist. Stelle sicher, dass alle externen Funktionen korrekt deklariert sind.
Alternative Methoden
-
Wechsel von 32-Bit auf 64-Bit: Du kannst deine Excel-Version auf 64-Bit umstellen, indem du die Installation von Office 2016 entsprechend anpasst. Dies kann jedoch bedeuten, dass du 32-Bit spezifische Add-Ins oder VBA-Codes anpassen musst.
-
VBA-Tools nutzen: Es gibt Tools und Add-Ins, die dir helfen können, deinen VBA-Code automatisch auf die 64-Bit-Version zu aktualisieren.
Praktische Beispiele
Hier ist ein Beispiel für die Aktualisierung eines VBA-Codes, der MakeSureDirectoryPathExists verwendet:
Option Explicit
Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" Alias _
"MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long
Sub machHyperlinksNurEingeblendete()
Dim lZeile As Long, lLetzteZeile As Long
Dim strWurzel As String, strVerzeichnis As String
strWurzel = ActiveWorkbook.Path & "\"
With ActiveSheet
lLetzteZeile = .Range("A:A").Find("*", , , , xlByRows, xlPrevious).Row
For lZeile = 7 To lLetzteZeile
If Not .Rows(lZeile).Hidden Then
strVerzeichnis = CStr(.Cells(lZeile, 1).Value)
If MakeSureDirectoryPathExists(strWurzel & strVerzeichnis & "\") Then
ActiveSheet.Hyperlinks.Add Anchor:=.Cells(lZeile, 1), _
Address:=strWurzel & strVerzeichnis, _
ScreenTip:="Öffne " & strVerzeichnis, _
TextToDisplay:=strVerzeichnis
End If
End If
Next
End With
End Sub
Tipps für Profis
- Verwende
LongPtr: In deiner Codebasis solltest du LongPtr für alle Variablen verwenden, die Zeiger auf 64-Bit-Systemen darstellen.
- Testen: Teste deinen aktualisierten Code gründlich, um sicherzustellen, dass er unter 64-Bit umgebungen fehlerfrei funktioniert.
- Aktualisiere regelmäßig: Halte deinen Code aktuell, um zukünftige Kompatibilitätsprobleme zu vermeiden.
FAQ: Häufige Fragen
1. Wie erkenne ich, ob mein Code 64-Bit-kompatibel ist?
Achte darauf, dass alle Declare-Anweisungen das PtrSafe-Schlüsselwort enthalten und dass die Datentypen korrekt verwendet werden.
2. Was mache ich, wenn ich weiterhin Fehlermeldungen erhalte?
Überprüfe alle Declare-Anweisungen und stelle sicher, dass alle externen Funktionen korrekt deklariert sind. Es kann auch hilfreich sein, den Code in einer 32-Bit-Umgebung zu testen, um die Unterschiede zu erkennen.