regRead

时间:2017-04-24 12:31:29

标签: excel-vba vba excel

我正在尝试通过Excel VBA自动执行项目填写Excel工作表的例行任务。 Excel中的一列需要最新的Windows Update日期。 我写下面的子程序来实现同样的目的。

Sub windowsUpdate()
    Dim windowShell
    Dim regValue

    Set WindowShell = CreateObject("WScript.shell")

    regValue = WindowShell.regRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install\LastSuccessTime")
    WScript.echo "Updated date is : " & regValue
End Sub

有了这个,我得到两个类似于下面的错误。当试图执行相同的。

  

注册表项中的Root无效   " HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \ WindowsUpdate的\汽车   更新\结果\安装\ LastSuccessTime"

  

自动化错误:找不到指定的路径

我处于初始级别的Excel VBA,对上述两个错误的任何指导都会有很大的帮助。

1 个答案:

答案 0 :(得分:3)

这意味着注册表项不存在。

使用以下功能检查密钥是否存在,如果是,请阅读。

Option Explicit

Sub WindowsUpdate()
    Dim strKey As String
    strKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Install\LastSuccessTime"

    If RegKeyExists(strKey) Then
        MsgBox "Value is: " & RegKeyRead(strKey), vbInformation
    Else
        MsgBox "Key does not exist.", vbCritical
    End If
End Sub

'read an existing registry key
Function RegKeyRead(i_RegKey As String) As String
    Dim myWS As Object

    On Error Resume Next
    Set myWS = CreateObject("WScript.Shell") 'access Windows scripting
    RegKeyRead = myWS.RegRead(i_RegKey) 'read key from registry
End Function

'test if a registry key exists
Function RegKeyExists(i_RegKey As String) As Boolean
    Dim myWS As Object

    On Error GoTo ErrorHandler
    Set myWS = CreateObject("WScript.Shell") 'access Windows scripting
    myWS.RegRead i_RegKey 'try to read the registry key
    RegKeyExists = True 'key was found
    Exit Function

ErrorHandler:
    'key was not found
    RegKeyExists = False
End Function