Я считаю, что эти макросы демонстрируют то, что вам нужно знать.
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
Вы пробовали «C: \ test.xls»? обычно ссылка на файл не будет работать без обратной косой черты, – DeanOC
Используйте эту функцию в [этом ответе] (http://stackoverflow.com/a/22309698/2548721). – Manhattan
отсутствует "\" в определении c: \ test.xls –