有人能告诉我我的代码有什么问题吗?我得到了runtime error 424 - object required here
:
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
。
有什么想法吗?
答案 0 :(得分:0)
我相信这些宏证明了你需要知道的东西。
Demo1
输出在当前Excel副本中打开的工作簿的路径和名称。
在Demo2
中,我测试一个特定名称,如果找不到则打开它。请注意我如何使用持有宏的工作簿的路径。我通常将相关的宏保存在同一个文件夹中,这样很方便。
“c:test.xls”可能存在问题,但评论中提到的问题并不完全。
“c:test.xls”引用驱动器C的当前目录中的文件“test.xls”。
“c:\ test.xls”引用驱动器C的 root 目录中的文件“test.xls”。
试试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