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.