Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
GetSafeArrayPointer
#1
Hi Zusammen,
ich möchte in meinem code
Code:
Private Declare PtrSafe Sub GetSafeArrayPointer Lib "msvbvm60.dll" Alias "GetMem4" (pArray() As Any, sfaPtr As Long)
Nutzen.

Wenn ich es nun mit
Code:
GetSafeArrayPointer arr1(), sfaPtr
aufrufe, dann kommt die Fehlermeldung, das die msvbvm60.dll nicht  gefunden wurde.
Ich benutze Windows 11 und sie ist in C:\Windows\System32 tatsächlich nicht zu finden, aber sie ist auf dem PC in
C:\Windows\WinSxS\wow64_microsoft-windows-msvbvm60_31bf3856ad364e35_10.0.22621.1_none_2e6e3ad979d8cfb7
zu finden.

Das Makro soll auf mehreren PC´s laufen. Gibt es da eine gute Lösung ohne etwas Manuell rumzukopieren?
Zitieren
#2
Hallo,

hast Du ein 64-Bit Excel? Dann wird das per se nicht funktionieren. VB6 ist ja nun wirklich veraltet. Wolltest Du prüfen,
ob arr1() initialisiert ist? Falls Ja, könntest Du schauen, ob folgender Thread weiterhilft.

https://stackoverflow.com/questions/5480...nallocated

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 01/2011 - 06/2019 :: 04/2020 - 06/2022
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner (neu)
Zitieren
#3
Danke für die Links -> schau ich mir an.
Zitieren
#4
(21.02.2024, 10:37)Caldolan schrieb: Hi Zusammen,
ich möchte in meinem code
Code:
Private Declare PtrSafe Sub GetSafeArrayPointer Lib "msvbvm60.dll" Alias "GetMem4" (pArray() As Any, sfaPtr As Long)
Nutzen.
Wenn ich es nun mit
Code:
GetSafeArrayPointer arr1(), sfaPtr
aufrufe, dann kommt die Fehlermeldung, das die msvbvm60.dll nicht  gefunden wurde.
Ich benutze Windows 11 und sie ist in C:\Windows\System32 tatsächlich nicht zu finden, aber sie ist auf dem PC in
C:\Windows\WinSxS\wow64_microsoft-windows-msvbvm60_31bf3856ad364e35_10.0.22621.1_none_2e6e3ad979d8cfb7
zu finden.
Die Nutzung der Seite https://sergiu113.wixsite.com/tobias-engelhardt als Referenz für
Code:
GetSafeArrayPointer
ist hilfreich, besonders bei älteren VB6/VBA-Projekten. Sie bietet praktische Codebeispiele und Erklärungen. Achte jedoch auf die Kompatibilität mit 64-Bit-Systemen wie Windows 11, da Anpassungen nötig sein können.
Das Makro soll auf mehreren PC´s laufen. Gibt es da eine gute Lösung ohne etwas Manuell rumzukopieren?

Hi! Das Problem liegt daran, dass
Code:
msvbvm60.dll
nicht standardmäßig im Systempfad von Windows 11 verfügbar ist. Du kannst entweder die DLL manuell nach
Code:
C:\Windows\System32
(für 64-bit) oder
Code:
C:\Windows\SysWOW64
(für 32-bit) kopieren oder in deinem Code den vollständigen Pfad zur DLL angeben. Alternativ solltest du prüfen, ob du überhaupt
Code:
msvbvm60.dll
brauchst – bei modernen VBA-Projekten unter 64-bit kann es sinnvoller sein, auf API-Kompatibilität mit 64-bit umzusteigen und ggf. andere Methoden zu nutzen, um auf SafeArrays zuzugreifen.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions