我有以下一段VB代碼來獲取註冊表子項(NOT註冊表的鍵值或值)。我只需要列出Microsoft子項中的應用程序(例如Office,記事本,鍵盤等)。從VBA讀取註冊表子項
它的工作VB.NET,但我想同樣的代碼適用於VBA在宏,我得到一個運行時錯誤說對GetOBject
和EmumKey
行"Object variable or With block variable not set"
。我雖然下面的代碼應該兼容VB.NET和VBA。 任何人都可以請解釋一下嗎?
Dim temp As Object
'On Error Resume Next
Const HKEY_CURRENT_USER = &H80000001
temp = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & "." & "\root\default:StdRegProv")
Dim rPath As String
rPath = "Software\Microsoft\IdentityCRL\UserExtendedProperties"
Dim arrSubKeys(5) As Object
temp.EnumKey(HKEY_CURRENT_USER, rPath, arrSubKeys)
For Each ask In arrSubKeys
MsgBox(ask.ToString)
Next
VB.NET是*不*像VBA立即窗口。爲其中一個寫的代碼不會也不應該在另一箇中編譯。 – 2011-12-29 12:24:40
我實際上在google上得到這段代碼片段,它是爲VBA編寫的。奇怪的是,它在Visual Studio中編譯和運行良好,但在Excel中的VBA宏中出現錯誤。 – KMC 2011-12-29 12:29:45
@CodyGray,對不起,說他們彼此沒有任何關係,這只是不正確也沒有幫助。我不希望任何人閱讀你的評論,相信這一點。實際上,它們非常相似,都使用BASIC語法,因此KMC的代碼片段非常易於在任何環境下以最小的更改進行工作(如下面的答案),這正是KMC提供幫助的地方。我們可以抱怨優化,但完全不同。 – Chalky 2014-08-11 21:52:59