Как сделать уникальное имя сохраняемого документа VBA excel. Например Test0, Test1 и тд

Public Sub ButtonSave_Click()
Workbooks.Add
FiNum = 0
FiName = "C:\Users\svv71\Desktop\Test\Test" & FiNum & ".xlsx"
ActiveWorkbook.SaveAs Filename:=FiName
FiNum = FiNum + 1

ActiveWorkbook.Close
End Sub

Ответы (2 шт):

Автор решения: rotabor

Примерно так:

Sub sxfgsdf()
  Dim FiNum As Integer, FiName As String
  FiName = "C:\Users\svv71\Desktop\Test\Test"
  While Dir(FiName & FiNum & ".xlsx") <> ""
    FiNum = FiNum + 1 ' циклим и инкрементируем, пока такой файл есть
  Wend
  ActiveWorkbook.SaveAs Filename := FiName & FiNum & ".xlsx"
End Sub

Если вам нужно вообще уникальное имя, то его нужно сохранять где-то в книге. Можно сделать новый лист Misc (например) и скрыть его.

Sub sxfgsdf()
  Dim FiNum As Integer, FiName As String
  FiName = "C:\Users\svv71\Desktop\Test\Test"
  FiNum = Sheets("Misc").Cells(1, 1) + 1
  While Dir(FiName & FiNum & ".xlsx") <> ""
    FiNum = FiNum + 1 ' циклим и инкрементируем, пока такой файл есть
  Wend
  Sheets("Misc").Cells(1, 1) = FiNum ' счётчик будет в последней сохранённой книге
  ActiveWorkbook.SaveAs Filename := FiName & FiNum & ".xlsx"
End Sub

Автономно счётчик можно хранить в отдельном файле.

→ Ссылка
Автор решения: Алексей Р

Вариант с использованием CustomDocumentProperties

Option Explicit

Sub UniqNameSave()
    Const CDP_NAME = "Version", BASE_NAME = "Test*.xlsx"
    Dim Version As Object
    With ActiveWorkbook.CustomDocumentProperties
        On Error Resume Next
        Set Version = .Item(CDP_NAME) ' пытаемся извлечь свойство с номером версии книги
        On Error GoTo 0
        If Version Is Nothing Then ' если свойства еще нет, то добавляем его и устанавливаем начальное значение
            .Add Name:=CDP_NAME, LinkToContent:=False, Type:=msoPropertyTypeNumber, Value:=0
        Else
            Version = Version + 1 ' если свойство уже существует, инкрементируем
        End If
        ActiveWorkbook.SaveAs Replace(BASE_NAME, "*", Format(Version, "000")) ' сохраняем книгу, добавляя номер версии из свойства и форматируя
    End With
End Sub
Test016.xlsx
Test015.xlsx
Test014.xlsx
Test013.xlsx
Test012.xlsx
...
→ Ссылка