Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBAHTML auf 64bit-Office
#11
Hi Rene,

bin jetzt durch. Habe aber noch einen Fehler. Beim Start kommt die Meldung "Es ist ein Fehler aufgetreten". Anschliessend wird bemängelt, ich sollte den Zugriff auf das VBE-Projekt erlauben. Hab ich. Das AddIn wird dennoch installiert. Beim Ausführen mit einem markierten Codeteil stürzt Excel ab. Im Zwischenspeicher hat sich nix getan.

Übrigens, man kann die ganzen #If für die API eines Moduls auch zusammenfassen. Die sind im Moment um jede API einzeln. Gilt dann natürlich auch für Variablen, Typen usw.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#12
Danke!

(23.01.2021, 20:15)schauan schrieb: Habe aber noch einen Fehler. Beim Start kommt die Meldung "Es ist ein Fehler aufgetreten".
Könnte an der Funktion "ZugriffAufVBE" liegen (wenn iResult <> 0 bleibt dann Fehler). Eventuell müsste man noch "RegKeyExist" anpassen?

Public Function RegKeyExist(section As Long, key_name As String) As Long

   #If Win64 And VBA7 Then
     Dim Result As LongPtr, hKey As LongPtr
   #Else
     Dim Result As Long, hKey As Long
   #End If
   
     Result = RegOpenKeyEx(section, key_name, 0, &H1 Or &H4 Or &H10, hKey)
     If Result = 0& Then Call RegCloseKey(hKey)
     RegKeyExist = Result
End Function

(23.01.2021, 20:15)schauan schrieb: Übrigens, man kann die ganzen #If für die API eines Moduls auch zusammenfassen.
Mal schauen ob das damit übersichtlicher wird.
Antworten Top
#13
Hi René,

ja, irgendwie erkennt er den Key nicht. Ich hab mal in 32 und 64 mit regedit nachgeschaut, ist auf dne ersten Blick kein Unterschied zu sehen.
Übrigens, ich hab gerade gemerkt, ich hab in dem Makro die Änderung für hwnd nicht gespeichert. Dort müsste auch die Fallunterscheidung rein mit LongPtr... Daran lag es übrigens nicht, das hatte ich vorhin beim Test drin.

... der Fehler kommt von der Prüfung
iResult = RegCreateKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Office\" & Application.Version & "\Excel\Security\", 0, "", 0, KEY_ALL_ACCESS, SA, hwnd, lResult)

Eine Änderung der Funktion bringt dafür nichts Sad Ich teste mal, ob damit der Absturz nicht kommt.

jetzt ist es nicht mehr abgestürzt. Aber es kommt "Es ist ein Fehler aufgetreten"

oh, hat 'ne Minute gedauert und ist doch noch abgestürzt Sad

.. so, mach jetzt erst mal bis morgen eine schöpferische Pause Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
Vielleicht funktioniert es ja wenn man "AccessVBOM" direkt abfragt. Das können wir ja die nächsten Tage mal testen. Oder braucht Excel eventuell Administratorrechte?
Antworten Top
#15
Hab mal noch eine kleine Anpassung vorgenommen. Vielleicht kommt ja die Meldung damit nicht mehr.
Antworten Top
#16
Hallo Rene,

mdlEinrücken:
Declare PtrSafe Sub RtlMoveMemory Lib "kernel32" ( Destination As Any, Source As Any, ByVal Length As LongPtr)

Hast Du im API-Viewer vielleicht nicht gefunden, weil das läuft unter CopyMemory..

VG KH
Antworten Top
#17
Danke fürs Reinschauen.

(24.01.2021, 00:54)volti schrieb: Hallo Rene,

mdlEinrücken:
Hast Du im API-Viewer vielleicht nicht gefunden
Nein, das war ein Kopierfehler.

Ich in gerade dabei, mein altes Surface herzurichten. Da werde ich dann die 64-bit-Version aufspielen. Dann kann ich dann sehen wo es kracht.
Antworten Top
#18
Moin René,

ich hab mal die Ergebnisprüfung in ZugriffAufVBE nach das Aulesen mit wsh gesetzt.
Alt war's auf Excel und jetzt auf Word. Besser wäre, das in Abhängigkeit von der Anwendung variabel zu gestalten. Ich hatte den Zugriff nur in Excel und nicht in Word erlaubt. Dann so:

iResult = wsh.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & "\" & Split(Application.Name, " ")(1) & "\Security\AccessVBOM")

iResult muss dann auch 1 sein, also:

If iResult <> 1 Then

Dann hast Du dort noch
Const HKEY_CURRENT_USER = &H80000001
Das kann weg. in mdlMain hast Du
#If Win64 And VBA7 Then
Public Const HKEY_CURRENT_USER As LongPtr = &H80000001
#Else
Public Const HKEY_CURRENT_USER As Long = &H80000001
#End If

gesplittet in eine 32er und eine 64er hab ich dann noch Funktionen und Aufrufe von
EnumSubKey
RegKeyExist

Beim anschließenden Test beendet sich Excel nach wie vor. Im EnumSubKey wird bei RegOpenKeyEx(..) (noch?) nix gefunden. Könnte aber auf ein ähnliches Problem laufen wie zuvor bei ZugriffAufVBE

Stand sende ich Dir gleich wieder per EMail.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#19
"EnumSubKey" greift ja eigentlich nur auf "VB and VBA Settings" zu, da gibt es keine Versionsunterschiede. Hat man aber keine Zugriffsrechte auf diesen Pfad kann es zu Problemen kommen. Eventuell funktioniert es mit einer Unterscheidung zwischen 64-bit und 32-bit.
Antworten Top
#20
In EnumSubkey hast Du zwei API-Aufrufe, die wiederum Long oder LongPtr haben wollen. Die Registryeinträge werden ja alle im HKCU geprüft und sollten da keine Probleme mit den Zugriffen haben.
Im ZugriffAufVBE könnte man eventuell auch noch auf den VBE-Schlüssel prüfen. Der wird erst beim ersten mal Zugriff gewähren angelegt.
Habe übrigens heute Vormittag mit Deiner aktualisierten Version weiter gemacht (#If zusammengefasst) Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


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