如果wbk open什么都不做,如果没有打开它

时间:2015-02-27 02:36:31

标签: vba excel-vba excel

有人能告诉我我的代码有什么问题吗?我得到了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

有什么想法吗?

1 个答案:

答案 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