Как сохранить AsAs в VBA с увеличением значения с помощью цикла Do While - PullRequest
0 голосов
/ 16 июня 2019

У меня есть простая проблема, логику которой я понимаю, но кажется, что Excel не примет это. Я написал цикл Do While, чтобы увеличить мое имя файла на 1, если он обнаруживает файл с таким же именем в пути к файлу. Например, если VBA обнаружит имя файла № 5 в моем пути, он сохранит файл как № 6. И так далее.

Sub Increment_My_File()

      Dim myfile As String, mypath As String, mycount As Integer, _
              mydate As String

      mycount = 1

      mydate = Format(Now(), "MM-DD-YYYY")

      mypath = "C:\Users\reggie\OneDrive\Documents\"

      myfile = "Account Breakdown " & mydate & " #" & mycount _ 
            & " Inventory Allocation"


      Workbooks.Add            
      'and do some code

      Do While Dir(myfile) <> ""


          myfile = "Account Breakdown " & mydate & " #" & mycount _ 
              & " Inventory Allocation"

          mycount = mycount + 1

          'myfile = Dir   '<<<don't know its purpose; does not help it seems

      Loop    

      ActiveWorkbook.SaveAs Filename:=C:\Users\reggie\OneDrive\Documents\" & _
           myfile

End Sub

Код выполняется хорошо, но предлагает мне перезаписать существующее имя файла, например, с # 1 вместо автоматического увеличения целого числа mycount на 1 до # 2 в пути. Таким образом, в течение дня, я могу увеличить на 1 по сравнению с последним именем файла, скажем, # 7 ... затем он сохраняет в # 8

(Например, SaveAs ... Распределение учетных записей 15/06/2019 # 8 Распределение ресурсов ... в том же каталоге)

Я пытался всеми способами изменить мой каталог на dir(mypath & myfile) и т. Д., Но у меня есть блок писателя.

Пожалуйста, совет.

Спасибо, друзья!

1 Ответ

2 голосов
/ 16 июня 2019

Увеличьте mycount перед тем, как вы восстановите myfile.

Line Swap

Как уже упоминалось @ComputerVersteher, вам также необходимо использовать путь.

Sub Increment_My_File()

      Dim myfile As String, mypath As String, mycount As Integer, _
              mydate As String, wb as Workbook

      mydate = Format(Now(), "MM-DD-YYYY")
      mypath = "C:\Users\reggie\OneDrive\Documents\"

      Set wb = Workbooks.Add
      'and do some code

      Do
          mycount = mycount + 1
          myfile = mypath & "Account Breakdown " & mydate & " #" & mycount _
              & " Inventory Allocation.xlsx"
          'Dir   '<<<this would return the next file name in the folder. Not what you are trying to do
      Loop Until Dir(myfile) = ""

      wb.SaveAs Filename:=myfile

End Sub
...