我有以下一段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