Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

Fehler mit PtrSafe

Fehler mit PtrSafe
08.06.2020 17:48:07
Sco
Hallo liebe Experten,
ich habe folgendes Problem:
Ich habe eine Excelvorlage mit Makros erstellt, verschicke ich diese bekomme ich folgenden Fehler:
Datei ist beschädigt und kann nicht geöffnet werden.
an meinem PC mit Office 2007 kann ich diese immerhin öffnen, allerdings mit einem Fehler im VBA:
Code:
Option Explicit
Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As LongPtr, _
ByVal hWndInsertAfter As LongPtr, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare PtrSafe Function SetDlgItemText Lib "user32" Alias "SetDlgItemTextA" ( _
ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, ByVal lpString As String) As Long
Private Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare PtrSafe Function GetDesktopWindow Lib "user32" () As LongPtr
Private Declare PtrSafe Function MessageBox Lib "user32" Alias "MessageBoxA" ( _
ByVal hwnd As LongPtr, ByVal lpText As String, ByVal lpCaption As String, _
ByVal wType As Long) As Long
Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" ( _
ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, _
ByVal dwThreadId As Long) As LongPtr
Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" ( _
ByVal hhk As LongPtr) As Long
#If Win64 Then
Private Declare PtrSafe Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongPtrA" ( _
ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
#Else
Private Declare PtrSafe Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongA" ( _
ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
#End If
Private Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare PtrSafe Function GetWindowRect Lib "user32" ( _
ByVal hwnd As LongPtr, lpRect As RECT) As Long
Private Declare PtrSafe Function GetSystemMetrics Lib "user32" ( _
ByVal nIndex As Long) As Long
Da wird das erste PtrSafe markiert und der Fehler Fehler beim Kompilieren: Erwartet: Sub oder Function ausgegeben.
Dann ist soweit auch alles rot.
Der PC an dem die Datei erstellt wurde hat dieselbe 64-bit Version, wie der PC zu dem ich die Datei ursprünglich per Mail versendet habe.
Kann mir jemand helfen?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler mit PtrSafe
08.06.2020 18:14:43
Sco
Verstehe ich nicht ganz.
Ich habe doch überall PtrSafe vor Funktion eingefügt, kann die Datei aber nicht an einem anderen 64-Bit mit Office 365 öffnen
AW: Fehler mit PtrSafe
08.06.2020 18:59:56
ralf_b
vielleicht ist "Überall" nicht die Lösung. ich rate nur, weil ich keine api programmierung mache
hier noch ein link darüber. https://www.vba-tutorial.de/api/version.htm
Anzeige
AW: Fehler mit PtrSafe
08.06.2020 20:44:46
volti
Hallo Sco Be,
Dein hier geposteter Declare-Teil ist für 64-Bit-Anwendung vollkommen in Ordnung. Da sind keine Fehler drin.
Wenn alles rot ist und der o.a. Fehler angezeigt wird, tippe ich darauf, dass Du die 32-Bit Version benutzt.
Wenn Du beide Versionen benutzen möchtest, kannst Du beide Declare-Typen mit dem Compiler-Schalter integrieren.
Im übrigen reicht es nicht, für eine 64-Bit-Umsetzung einfach nur PtfSafe einzufügen. Es müssen auch alle Handle und weitere Variablen auf LongPtr umgesetzt werden.
viele Grüße
Karl-Heinz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige