2013-10-22 49 views
4

我想使用通配符打開存儲在與我的宏工作簿相同的文件夾中的工作簿。在該文件夾中是一個名爲302113-401yr-r01.xlsm的文件。這裏是我的代碼:使用通配符打開Excel工作簿

Workbooks.Open filename:=ActiveWorkbook.Path & "\302113*.xlsm" 

但是,它告訴我,沒有這樣的文件。有什麼建議?

+1

您不能在路徑或文件名中使用星號。您需要分別打開每個文件。在SO中搜索'Dir函數',確實有很多例子。 [這裏](http://msdn.microsoft.com/en-us/library/office/gg278779%28v=office.14%29.aspx)你也可以找到一些信息。 –

回答

10

我們無法使用通配符打開文件 - 如果可以的話,想象一下混亂!

您需要使用Dir(ActiveWorkbook.Path & "\302113*.xlsm")來循環返回的文件。如果只會有一個那麼就使用此功能,一旦:

Dim sFound As String 

sFound = Dir(ActiveWorkbook.Path & "\302113*.xlsm") 'the first one found 
If sFound <> "" Then 
    Workbooks.Open filename:= ActiveWorkbook.Path & "\" & sFound 
End If 

Dir Function:在網上

+2

+ 1'我們無法使用通配符打開文件 - 想象一下如果我們可以這樣的混亂!'真實:) –

+0

啊,我看到如何使用通配符打開文件會有問題。感謝您的迴應! – DanW

+1

只是一個評論,除非我錯了,似乎DIR函數只返回文件名,而不是路徑和文件名。因此,當我在上面的代碼中使用Workbooks.Open時,必須使用:ActiveWorkbook.Path&「\」&sFound – DanW

3

從我的經驗,這高科技的工作,如果你有通配符/星號爲字符串中的最後一個符號和如果只有一個文件。嘗試這樣做:

Workbooks.Open filename:=ActiveWorkbook.Path & "\302113*" 

比如我使用:

Workbooks.Open Filename:="X:\business\2014\Easy*" 

和它的作品。

2

您可以使用通配符打開文件,但僅出於某種原因與UNC路徑打開。

例如:

Set xlFile = xlObj.WorkBooks.Open("\\yourServerHere\dataAutomation\*.xlsx") 
+0

這種方法不適用於我,取消我的upvote(已鎖定)。 –

2

我不是還與Excel,但下面的工作經歷很適合我使用的文件名通配符來打開文件。這個例子要求所有文件都在同一個目錄/文件夾中。是的,這很簡單。

Sub using_wildcards_to_open_files_in_excel_vba() 

    Dim mypath As String 
    Dim sFilename As String 

    'Suppose you have three files in a folder 
    ' Named blank.xlsx,, ex1_939_account.xlsx, and ex1_opt 5.xlsx 

    'Manually open the blank.xlsx file 

    'The following code lines will open the second two files before closing the previously opened file. 

    ActiveWorkbook.Activate 
    mypath = ActiveWorkbook.Path 
    'opening xlsx file with name containing "939" and closing current file 
    mypath = mypath & "\*939*.xlsx" 
    'MsgBox mypath 'Checking 
    sFilename = Dir(mypath) 
    'MsgBox sFilename 'Checking 

    ActiveWorkbook.Close savechanges:=False 
    Workbooks.Open Filename:=sFilename 

    ActiveWorkbook.Activate 
    mypath = ActiveWorkbook.Path 
    'opening xlsx file with name ending in "opt 5" and closing current file 
    mypath = mypath & "\*opt 5.xlsx" 
    'MsgBox mypath 'Checking 
    sFilename = Dir(mypath) 
    'MsgBox sFilename 'Checking 

    ActiveWorkbook.Close savechanges:=False 
    Workbooks.Open Filename:=sFilename 

End Sub 
相關問題