Выполнить во время цикла, чтобы открыть несколько книг с переменной в имени файла - PullRequest
0 голосов
/ 02 июня 2018

Справедливое предупреждение, это моя первая (и неудачная) попытка использования оператора цикла.

У меня есть папка, содержащая множество рабочих книг, у всех из которых в качестве имени файла указана дата.Я хотел бы создать макрос, который использует дату, предоставленную пользователем, чтобы открыть все рабочие книги с этой датой в своем имени.

Мой текущий оператор Loop просто снова и снова открывает один и тот же файл вместооткрыть все файлы с этой датой в имени и затем выйти из цикла, даже если в папке есть несколько файлов с этой датой в имени.Это то, что я имею до сих пор ...

Dim finddate As Variant
Dim formatedate As String
Dim mypath As String


finddate = InputBox("Enter Date to Show Records")
Range("A1") = finddate
formatedate = ActiveSheet.Range("A2").Value


mypath = "filepathhere\???????" & formatedate & ".xlsm"

Do While mypath <> ""
Workbooks.Open Filename:=mypath
Loop

Формула в А2 форматирует любую дату, которую пользователь вводит, чтобы соответствовать способу именования файлов.Есть ли что-то еще, что мне нужно сделать, чтобы сказать, чтобы перейти от первого файла и искать другие в папке?Кроме того, я не уверен, как выйти из цикла, поэтому, как только он (надеюсь) открывает файлы с этой датой, он прекращает цикл по папке.

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Вы должны гарантировать, что formatedate меняет свое значение перед вызовом Loop, поэтому, вероятно, это будет выглядеть примерно так:

Dim finddate As Variant
Dim formatedate As String
Dim mypath As String

finddate = InputBox("Enter Date to Show Records")    
Range("A1") = finddate

Do While mypath <> ""

        formatedate = ActiveSheet.Range("A2").Value
        mypath = "filepathhere\???????" & formatedate & ".xlsm"
        Workbooks.Open Filename:=mypath

        'IMPORTANT, insert some code here that garantees that
        'cell A1 and/or A2 has a different file name, otherwise,
        'it will keep passing the same value over and over

Loop

Вы должны как-то гарантировать, что значение в A2.Кроме того, вы должны гарантировать, что в конечном итоге mypath = "" в противном случае цикл никогда не закончится.Некоторые сведения об описании вашей проблемы мне не совсем понятны, но я думаю, что основная идея такова:

Всегда иметь переменную в условии While перед вызовом Loop, и всегдаубедитесь, что в конце концов условие для разрыва цикла будет выполнено.

Кроме этого, я думаю, вы можете адаптировать ответ, если он не полностью соответствует структуре вашей рабочей книги.

0 голосов
/ 02 июня 2018

Простой обходной путь - удаление файла после его использования.Конечно, вы должны сделать резервную копию ваших файлов в другом месте.И обычно я сначала переименую файл.

       Set fso = CreateObject("Scripting.FileSystemObject")
       Set fsoFolder = fso.getfolder(filePath)
       fsoFile.Name = "d:\folder\blablabla.xls"
        ' do your things

       FileSystem.Kill "d:\folder\blablabla.xls" 'delete file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...