2013-11-15 2 views
2

Я пытаюсь настроить панель, которую я только что создал, чтобы автоматически (ну, как только она снова открывается) обновляется, когда я вношу изменения в будущем. Я разработал следующий способ его выполнения, но я продолжаю получать ошибку «Тип несоответствия» в строке, помеченной знаком **. Я чувствую, что я "м не хватает что-то очень очевидное здесь, но для жизни меня, я не могу понять это. Есть идеи?тип несоответствие при потянув .значение от рабочей книги

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 

ответ

3

Я думаю, что это происходит потому, что вы используете объект рабочей книги неправильно.

вы устанавливаете книгу здесь ..

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

, а затем вы должны использовать его, как это.

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

Я буквально сделал лоб пощечину прямо там. Спасибо за быстрый ответ! – PermaNoob

2

Просто вопрос синтаксиса. После того как вы:

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

Вы должны использовать его как:

CurrVer = UpDateBook.Sheets("Version_Log").Range("A5000").End(xlUp).Value 
Смежные вопросы