Есть ли способ в VBA найти строку в каталоге, а затем цикл? - PullRequest
0 голосов
/ 23 июня 2019

Я частично решил мою проблему ниже.В течение дня я хочу увеличить свои файлы на 1.

В настоящее время я могу просто увеличить свои файлы с тем же именем (той же строкой) на 1, если Excel обнаружит в mypath файл с помощьюс таким же именем

Мой файл, например, будет сохранен как Red 06-22-2019 #9, если VBA обнаружит Red 06-22-2019 #8 в каталоге

Однако я хочу, чтобы все мои файлы увеличивались на 1 (независимо отто же имя файла), обнаруживая только общую подстроку (текущую дату).

То есть вместо того, чтобы Excel обнаружил то же имя файла и увеличил mycount на 1 (как показывает мой код ниже), я хочу, чтобы Excel обнаружил в том же каталоге, есть ли имя файла с сегодняшней датой (mydate) существует.Если это так, это имя файла будет увеличиваться на 1. (Различные имена файлов имеют только одну и ту же текущую дату, поэтому я теоретически мог бы увеличивать много разных имен файлов в течение дня, каждого дня)

Итаккогда я сохраняю другое имя файла (Blue 06-22-2019), которое имеет подобную подстроку (текущую дату) с именами файлов Red, Excel будет увеличивать имя файла Blue на 1 (потому что оно обнаружило, дляНапример, 8 файлов "Red" в том же каталоге, в котором я хочу сохранить файл "Blue")

Файл Blue будет сохранен как Blue 06-22-2019 #9 (для этого примера)

Я много раз пытался работать в цикле, используя множество перестановок, но я относительный новичок во всем этом коде

И я не смог найти ничего об обнаружении подстрокв Интернете

Пожалуйста, помогите, если можете:)

Sub helpMePlease()   
      Dim myfile As String
      Dim mypath As String 
      Dim mycount As Integer 
      Dim mydate As String            

      mydate = Format(Now(), "MM-DD-YYYY") 
      mypath = "C:\Users\Robert\Colors\

      'do some code here, like opening a workbook and translating data, etc.

      'now, to save the opened workbook I came up with the below code    
      'it says increase my file name by 1 unless file name does not exist within my path

    Do
          mycount = mycount + 1
          myfile = mypath & "Blue " & mydate & " #" & mycount & ".xlsx"     
    Loop Until Dir(myfile) = ""          

    ActiveWorkbook.SaveAs Filename:=myfile

End Sub

1 Ответ

1 голос
/ 23 июня 2019

Вы должны иметь возможность использовать подстановочный знак в dir, например Dir (mypath & "*" & mydate & "#" & mycount & ".xlsx"). В этом случае он будет просматривать все файлы с одинаковой датой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...