2015-02-27 5 views
0

может кто-нибудь сказать мне, что случилось с моим кодом? Я получаю runtime error 424 - object required here:Если wbk open ничего не делать, если не открыть его

If MasterList Is Nothing Then 

On Error Resume Next 

Set MasterList = Workbooks("c:test.xls") 

On Error GoTo 0 

If MasterList Is Nothing Then 

Set MasterList = Workbooks.Open("c:test.xls") 

Else: End If 

я пытаюсь определить c:test.xls как MasterList но книга не обязательно может быть открыт. если он не открыт, я хочу, чтобы макрос открыл файл. Если он уже открыт, я хочу, чтобы макрос определял его как MasterList.

Любые идеи?

+3

Вы пробовали «C: \ test.xls»? обычно ссылка на файл не будет работать без обратной косой черты, – DeanOC

+0

Используйте эту функцию в [этом ответе] (http://stackoverflow.com/a/22309698/2548721). – Manhattan

+0

отсутствует "\" в определении c: \ test.xls –

ответ

0

Я считаю, что эти макросы демонстрируют то, что вам нужно знать.

Demo1 выводит пути и названия книг, открытых в текущей копии Excel.

В Demo2, я проверяю конкретное имя и открываю его, если он не найден. Обратите внимание, как я использую путь к книге, содержащей макрос. Обычно я поддерживаю связанные макросы в одной папке, поэтому это может быть удобно.

Возможно, возникла проблема с "c: test.xls", хотя это не совсем проблема, упомянутая в комментарии.

"C: test.xls" ссылается на файл "test.xls" в текущем каталоге диска C.

"C: \ test.xls" ссылается на файл "test.xls" в корень справочник привода C.

Пробег Debug.Print CurDir. Вероятно, вы получите C:\Users\YourUserName\Documents. Является ли это местонахождение «test.xls»

Option Explicit 
Sub Demo1() 

    Dim InxWbk As Long 

    For InxWbk = 1 To Workbooks.Count 
    Debug.Print "Path=[" & Workbooks(InxWbk).Path & "] Name=[" & Workbooks(InxWbk).Name & "]" 
    Next 

End Sub 
Sub Demo2() 

    Dim Found As Boolean 
    Dim InxWbk As Long 
    Dim MasterList As Workbook 

    Found = False 
    For InxWbk = 1 To Workbooks.Count 
    If Workbooks(InxWbk).Name = "Fruit.xls" Then 
     Set MasterList = Workbooks(InxWbk) 
     Found = True 
     Exit For 
    End If 
    Next 

    If Not Found Then 
    Set MasterList = Workbooks.Open(ThisWorkbook.Path & "\Fruit.xls") 
    End If 

    Call Demo1 

End Sub 
Смежные вопросы