Vba 从工作簿中提取.value时类型不匹配

Vba 从工作簿中提取.value时类型不匹配,vba,excel,excel-2010,Vba,Excel,Excel 2010,我正在尝试设置我刚刚创建的仪表板,以便在将来进行更改时自动(好的,只要它再次打开)自我更新。我已经找到了下面的方法,但是在标记为**的行中,我不断得到一个“类型不匹配”错误。我觉得我错过了一些很明显的东西,但就我个人而言,我想不出来。有什么想法吗 Private Sub Workbook_Open() Dim UpDateBook As Workbook Dim CurrVer As String Dim AdminFile As String Dim AdminFolder As String

我正在尝试设置我刚刚创建的仪表板,以便在将来进行更改时自动(好的,只要它再次打开)自我更新。我已经找到了下面的方法,但是在标记为**的行中,我不断得到一个“类型不匹配”错误。我觉得我错过了一些很明显的东西,但就我个人而言,我想不出来。有什么想法吗

Private Sub Workbook_Open()
Dim UpDateBook As Workbook
Dim CurrVer As String
Dim AdminFile As String
Dim AdminFolder As String
Dim MyPath As String

''Change the next two according to where the admin file will be located.
AdminFile = "\\dallfile\Databases\Reports\Dashboard\Dashboard Update.xlsx"
AdminFolder = "\\dallfile\Databases\Reports\Dashboard"

MyPath = ThisWorkbook.Path
MyPath = MyPath & "\"

Application.ScreenUpdating = False

Set UpDateBook = Workbooks.Open(AdminFile, , True)

**CurrVer = Workbooks(UpDateBook).Sheets("Version_Log").Range("A5000").End(xlUp).Value
CurrVer = CurrVer & ".xlsm"

If ThisWorkbook.Name <> CurrVer Then
    MsgBox ("There is a new update for your file available. It will be loaded as soon as you press OK")
    Workbooks.Open Filename:=AdminFolder & CurrVer
    Application.EnableEvents = False
    Workbooks(CurrVer).SaveAs Filename:=MyPath & CurrVer, FileFormat:=xlNormal
    Application.EnableEvents = True
    With ThisWorkbook
        .Saved = True
        .ChangeFileAccess Mode:=xlReadOnly
        Kill pathname:=.FullName
        .Close savechanges:=False
    End With
End If

Application.ScreenUpdating = True

End Sub
Private子工作簿\u Open()
将UpDateBook设置为工作簿
暗电流作为线
将AdminFile设置为字符串
将AdminFolder设置为字符串
将MyPath设置为字符串
''根据管理文件的位置更改下两个。
AdminFile=“\\dallfile\Databases\Reports\Dashboard\Dashboard Update.xlsx”
AdminFolder=“\\dallfile\Databases\Reports\Dashboard”
MyPath=ThisWorkbook.Path
MyPath=MyPath&“\”
Application.ScreenUpdating=False
设置UpDateBook=Workbooks.Open(AdminFile,True)
**CurrVer=工作簿(更新本)。工作表(“版本日志”)。范围(“A5000”)。结束(xlUp)。值
CurrVer=CurrVer&“.xlsm”
如果是此工作簿,则命名为CurrVer
MsgBox(“您的文件有一个新的更新可用。您按“确定”后将立即加载该文件”)
工作簿。打开文件名:=AdminFolder&CurrVer
Application.EnableEvents=False
工作簿(CurrVer).另存为文件名:=MyPath&CurrVer,文件格式:=xlNormal
Application.EnableEvents=True
使用此工作簿
.Saved=True
.ChangeFileAccess模式:=xlReadOnly
终止路径名:=.FullName
.Close savechanges:=False
以
如果结束
Application.ScreenUpdating=True
端接头

我认为这是因为您不正确地使用工作簿对象

您可以在此处设置工作簿

Set UpDateBook = Workbooks.Open(AdminFile, , True)
然后你应该像这样使用它

CurrVer = UpDateBook.Sheets("Version_Log").Range("A5000").End(xlUp).Value

只是语法问题。一旦您:

Set UpDateBook = Workbooks.Open(AdminFile, , True)
您应该像这样使用它:

CurrVer = UpDateBook.Sheets("Version_Log").Range("A5000").End(xlUp).Value

我真的在那里拍了一下额头。谢谢你的快速回答!