2014-11-20 4 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, 3.doc

PrimaryMergeFiles - это каталог, содержащий документы word и pptx.

+0

Ваш вопрос не содержит деталей, поэтому вы можете проверить [Контрольный список вопросов по StackOverflow] (http://blogs.msmvps.com/jonskeet/2012/11/24/stack-overflow-question-checklist/), чтобы вы могли улучшите, как вы построите свой вопрос в следующий раз и привлечете больше ответов. Тем не менее я дал ответ, который мог бы решить вашу проблему. – L42

+0

Позвольте мне попытаться понять это: в настоящее время ваш код выполняет итерацию по всем файлам в PrimaryMergeFiles, и если имя файла найдено в A1: A13, он запускает какой-то слияющий макрос. То, что вы хотели бы сделать, это перебрать ТОЛЬКО файлы, имена которых указаны в указанном диапазоне (вместо всех файлов в «PrimaryMergeFiles») и запускать ваш слияющий макрос на каждом из них по очереди. Это очень помогло бы, если бы у нас был тип данных folderIDX и PrimaryMergeFiles и какие данные содержатся в A1: A13, например. Имя файла, Имя папки, полный путь к файлу. – Aiken

+0

Да Айкен, Извините, если я не понял. – Jackson5

ответ

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 

Является ли это то, что вы пытаетесь? НТН.

+0

Из чтения вопроса кажется, что OP хочет перебирать только файлы, которые соответствуют именам в A1: A13, и всегда вызывать макрос, а не итерировать все файлы в «PrimaryMergeFiles», а затем вызывать макрос, если имя совпадает , В этом случае ваш ответ имеет ту же проблему, что и код в вопросе, вы все еще выполняете итерацию по всем файлам в «PrimaryMergeFiles». Я попросил ОП дать больше разъяснений о том, чего они на самом деле хотят. – Aiken