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

64 bit - Declare - PtrSafe Attribut = pffffff

Forumthread: 64 bit - Declare - PtrSafe Attribut = pffffff

64 bit - Declare - PtrSafe Attribut = pffffff
02.03.2019 11:33:05
Fred

Hallo Excel Profis,
ich bekomme bei folgenden Code eine Fehlermeldung die besagt, dass der Code auf 64-Bit-System aktualisiert werden soll,- ich die Declare-Anweisung aktualisieren soll und mit dem PtrSafe-Attribut markieren soll.
Option Explicit
Private Declare Function MakeSureDirectoryPathExists _
Lib "imagehlp.dll" (ByVal Pfad As String) As Long
Private Declare Function DeleteUrlCacheEntry Lib "wininet" Alias _
"DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" ( _
ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Public Sub GetFiles()
On Error GoTo Fin
LoadFiles "http://api.clubelo.com/" & Format(Now, "YYYY-MM-DD")
Fin:
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Public Sub LoadFiles(ByVal strURL As String)
Dim strBackup As String
Dim lngTMP As Long
strBackup = Environ("UserProfile") & "\Desktop\ELO33\"
Call DeleteUrlCacheEntry(strURL)
Call MakeSureDirectoryPathExists(strBackup)
lngTMP = URLDownloadToFile(0, strURL, _
strBackup & "Aktuell.csv", 0, 0)
End Sub
Kann mir jemand helfen, entsprechender Umstellung auf 64 Bit System ...
Mit freundlichen Gruß
Fred Neumann
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: 64 bit - Declare - PtrSafe Attribut = pffffff
02.03.2019 11:45:42
Nepumuk
Hallo Fred,
teste mal:
Private Declare PtrSafe Function MakeSureDirectoryPathExists _
    Lib "imagehlp.dll" (ByVal Pfad As String) As Long
Private Declare PtrSafe Function DeleteUrlCacheEntry Lib "wininet" Alias _
    "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" _
    Alias "URLDownloadToFileA" ( _
    ByVal pCaller As LongPtr, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As LongPtr) As Long

Gruß
Nepumuk
Anzeige
AW: 64 bit - Declare - PtrSafe Attribut = pffffff
02.03.2019 12:20:36
Fred
Nepumuk, Super!
Danke und schönes Wochenende.
Gruß
Fred
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Umstellung auf das PtrSafe-Attribut in Excel VBA 64-Bit


Schritt-für-Schritt-Anleitung

Um Code für 64-Bit-Systeme in Excel VBA anzupassen, ist es notwendig, das PtrSafe-Attribut in den Declare-Anweisungen zu verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Finde die Declare-Anweisungen: Suche nach allen Declare Function oder Declare PtrSafe Function Anweisungen in deinem Code.
  3. Füge das PtrSafe-Attribut hinzu: Bei 64-Bit-Deklarationen musst du das PtrSafe-Attribut hinzufügen.
    Private Declare PtrSafe Function MakeSureDirectoryPathExists _
    Lib "imagehlp.dll" (ByVal Pfad As String) As Long
  4. Nutze LongPtr für Zeiger: Ersetze alle Long-Typen, die Zeiger repräsentieren, durch LongPtr.
    ByVal pCaller As LongPtr
  5. Teste den Code: Führe den Code aus und prüfe, ob es keine Fehler gibt.

Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die bei der Umstellung auf das PtrSafe-Attribut auftreten können, sowie deren Lösungen:

  • Fehlermeldung „Declare-Anweisung nicht gefunden“: Überprüfe, ob du das PtrSafe-Attribut korrekt hinzugefügt hast.
  • Type Mismatch-Fehler: Stelle sicher, dass alle Typen in den Declare-Anweisungen korrekt sind (z.B. LongPtr für Zeiger).
  • PtrSafe Attribute 64 Bit Error: Dies tritt auf, wenn das PtrSafe-Attribut fehlt oder nicht korrekt deklariert ist. Überprüfe alle Funktionen auf Richtigkeit.

Alternative Methoden

Falls du keine 64-Bit-Version von Excel verwendest, kannst du folgende Alternativen in Betracht ziehen:

  • 32-Bit Kompatibilität: Halte den ursprünglichen Code für 32-Bit-Versionen und nutze bedingte Kompilierung:
    #If Win64 Then
       ' 64-bit Code
    #Else
       ' 32-bit Code
    #End If
  • Verwendung von Excel-Funktionen: Überprüfe, ob du bestimmte Funktionen direkt in Excel verwenden kannst, anstatt externe DLLs zu deklarieren.

Praktische Beispiele

Hier ist ein Beispiel, wie du eine Funktion mit dem PtrSafe-Attribut korrekt deklarierst:

Private Declare PtrSafe Function DeleteUrlCacheEntry Lib "wininet" _
Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long

Public Sub ClearCache()
    Dim url As String
    url = "http://example.com"
    Call DeleteUrlCacheEntry(url)
End Sub

Dieses Beispiel zeigt, wie du den DeleteUrlCacheEntry-Aufruf anpassen kannst, um ihn mit dem PtrSafe-Attribut in einer 64-Bit-Umgebung zu verwenden.


Tipps für Profis

  • Nutze LongPtr: Bei der Arbeit mit Zeigern in Excel VBA solltest du immer LongPtr verwenden, um sicherzustellen, dass dein Code sowohl in 32-Bit als auch in 64-Bit funktioniert.
  • Teste regelmäßig: Führe deinen Code regelmäßig in der VBA-Umgebung aus, um sicherzustellen, dass die Änderungen korrekt sind.
  • Dokumentiere Änderungen: Halte fest, welche Funktionen du geändert hast, um die Wartung des Codes zu erleichtern.

FAQ: Häufige Fragen

1. Was ist das PtrSafe-Attribut? Das PtrSafe-Attribut ist eine Anweisung, die in VBA verwendet wird, um anzugeben, dass eine Funktion in einer 64-Bit-Umgebung korrekt funktioniert.

2. Warum muss ich LongPtr verwenden? LongPtr wird verwendet, um sicherzustellen, dass Zeiger richtig behandelt werden, egal ob du eine 32-Bit oder 64-Bit Version von Excel verwendest.

3. Was mache ich, wenn ich einen PtrSafe Attribute 64 Bit Error erhalte? Überprüfe, ob das PtrSafe-Attribut in deinen Declare-Anweisungen vorhanden ist und ob alle Typen korrekt deklariert sind.

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