Eine Excel-Tabelle benötigt einen programmatischen Zugriff auf ihre Struktur Project
. Dieser Zugriff ist jedoch standardmäßig deaktiviert. Es kann programmatisch aktiviert werden, indem man mit diesem Code-Schnipsel in die Registrierung zu schreiben:Gibt an, ob eine Sicherheitsfunktion aktiviert werden soll
Set wsh = CreateObject("WScript.Shell")
'key to modify'
str1 = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & Application.Version & "\Word\Security\AccessVBOM"
'enable access'
wsh.RegWrite str1, 1, "REG_DWORD"
'read the vba project name'
MsgBox Application.NormalTemplate.VBProject.Name
'disable access'
wsh.RegDelete str1
Obwohl es (und Reset) programmatisch durchgeführt werden kann, das ein Sicherheitsproblem schaffen könnte.
In meinem Projekt versucht es, die Struktur Project
zu ändern, und löst einen Fehler aus, wenn es nicht möglich ist. Der Fehler kann abgefangen werden und an diesem Punkt kann er entweder das Snippet ausführen, um den Zugriff zu ermöglichen, oder dem Benutzer eine Fehlermeldung anzeigen, um den Zugriff manuell zu aktivieren. Ist es besser, den Zugriff über das Programm zu aktivieren, wo es später deaktiviert werden kann, oder den Benutzer dazu anzuleiten?
Ich schrieb diese Frage mit dem Best-Practices-Tag wegen der Bedenken über das Schreiben " unhöfliche "Software. Ihre Erwähnung von Office, das nur die Einstellung beim Start liest, könnte dies widerlegen - überprüft es die Registrierung in der geöffneten Datei oder in der offenen App? –