【问题标题】:VBA open excel workbook based on first part of file name?VBA根据文件名的第一部分打开excel工作簿?
【发布时间】:2017-03-03 12:05:57
【问题描述】:

我正在尝试使用 vba 打开一个 excel 工作簿:

'Open Planner
On Error Resume Next
Set WB = Workbooks("(FILE NAME).xlsx")
On Error GoTo 0
If WB Is Nothing Then 'open workbook if not open
    Set WB = Workbooks.Open("G:\BUYING\Food Specials\6. Depot Memos\" & ThisWorkbook.Worksheets(1).Range("T8").value & "\(File Name).xlsx", Password:="samples", WriteResPassword:="samples", UpdateLinks:=False)
End If

我遇到的问题是我的文件不时更改名称,如下所示:

Depot Memo 12 - 13
Depot Memo 13 - 14
Depot Memo 15 - 16

如何根据文件名“Depot Memo”的第一部分打开文件? 我是 VBA 的新手,所以非常感谢任何帮助。

提前致谢

【问题讨论】:

  • 你知道宏运行时要打开的文件名吗?如果没有,搜索的标准是什么?

标签: excel vba


【解决方案1】:

根据here 的回答尝试这个示例(向@Alex K 致敬):

只需像这样替换您的代码部分:

'Open Planner
'This is your routine here
On Error Resume Next
Set WB = Workbooks("(FILE NAME).xlsx")
On Error GoTo 0
If WB Is Nothing Then 'open workbook if not open
    Set WB = FindDepotMemo
End If
'and there you need another check if WB is nothing

并将此功能添加到您的项目中:

Function FindDepotMemo() As Workbook
    Dim Path As String
    Dim FindFirstFile As String

    Path = "G:\BUYING\Food Specials\6. Depot Memos\" & ThisWorkbook.Worksheets(1).Range("T8").Value & "\"

    FindFirstFile = Dir$(Path & "Depot Memo*.xlsm")

    If (FindFirstFile <> vbNullString) Then
        Set FindDepotMemo = Workbooks.Open(Filename:=Path & FindFirstFile, Password:="samples", WriteResPassword:="samples", UpdateLinks:=False)
    End If
End Function

【讨论】:

  • 此代码是否包括将工作簿设置为仓库备忘录,如果它已经打开,如果尚未打开,则打开它?如果工作簿已经打开,我可以看到此代码给出错误。如果工作簿是我的代码的打开部分,我将如何保持检查?
  • @user7415328,我更新了答案以适应您的日常工作,请随时添加检查和错误处理!
  • 感谢您的建议,但我认为这行不通。我收到 WB 的对象未定义错误。我删除了 Set WB = Workbooks("(FILE NAME).xlsx") 行,因为我没有名为文件名的文件,而 set WB = FinDepotMemo 应该是工作簿的名称。但我仍然收到错误
  • @user7415328,关于已打开工作簿的错误或什么?可以在打开您的 Depot Memo* 工作簿时 WB 什么都不是(例如,发生错误后,您的 WB 是本地可用的)。只需通过迭代打开的工作簿来检查这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 1970-01-01
  • 2019-12-04
相关资源
最近更新 更多