2014-11-20 51 views
0

目前,我的代碼循環遍歷目錄中的每個文件,並在文件名在該範圍內時運行宏。如何僅循環指定文件?

For Each folderIDX In PrimaryMergeFiles 
Dim vTest As Variant 
vTest = Application.WorksheetFunction.VLookup(folderIDX.Name, _ 
    Worksheets("Table").Range("A1:A13"), 1, False) 
If Not IsError(vTest) Then ***RUN MERGEMACRO*** 

我想改變它,使它只遍歷與範圍A1相同名稱的文件:A13

A1:A13包含姓名1.doc的,2.doc,檢視檢視

PrimaryMergeFiles是一個包含word和pptx文檔的目錄。

+0

你的問題是缺乏細節,所以你可能想檢查[StackOverflow問題清單](http://blogs.msmvps.com/jonskeet/2012/11/24/stack-overflow-question-checklist/),所以你可以改善您下次構建問題的方式並吸引更多答案。我提供了一個答案,可以解決您的問題。 – L42 2014-11-20 22:10:42

+0

讓我試着理解這一點:目前,您的代碼遍歷PrimaryMergeFiles中的所有文件,並且如果在A1:A13中找到文件名,它將運行某種合併宏。你想要做的只是遍歷指定範圍內給定名稱的文件(而不是''PrimaryMergeFiles'中的所有文件),並依次在每個文件上運行你的合併宏。如果我們具有folderIDX和PrimaryMergeFiles的數據類型以及A1中包含哪些數據:A13文件名,文件夾名稱,完整文件路徑。 – Aiken 2014-11-21 13:16:57

+0

是艾肯,對不起,如果我不清楚。 – Jackson5 2014-11-21 14:02:10

回答

0
For Each folderIDX In PrimaryMergeFiles 
Dim vTest As Variant 
For Each vTest in ThisWorkbook.Sheets("Table").Range("A1:A13") 
If vTest.value = folderIDX then 
End If 
Next 
Next 
0

試試這個:

With Application 
    Dim Flist As Variant 
    Flist = .Transpose(Sheets("Table").Range("A1:A13")) 
    For Each folderIDX In PrimaryMergeFiles 
     If Not IsError(.Match(folderIDX.Name,Flist,0)) Then Call MERGEMACRO 
    Next 
End With 

這是你想要什麼? HTH。

+0

從閱讀問題看來,OP似乎只想遍歷與A1:A13中的名稱匹配的文件,並且始終調用宏而不是遍歷'PrimaryMergeFiles'中的所有文件,然後調用宏,如果名稱匹配。在這種情況下,您的答案與問題中的代碼具有相同的問題,您仍在迭代'PrimaryMergeFiles'中的所有文件。我已經要求OP進一步澄清他們實際需要什麼。 – Aiken 2014-11-21 13:19:38