2014-11-20 48 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