VBscript. Имя Excel файла с текущей датой и временем

есть код который формирует "Отчет" в Excel. Необходимо сделать чтобы имя файла сохранялось с текущей датой и временем. Так же пробовал, создавать просто таблицу, а потом сохранять в директорию. Не совсем понятно, что я делаю не так.
В основном пользовался:

  1. https://stackoverflow.com/questions/17464698/open-an-excel-file-and-save-as-xls
  2. https://stackoverflow.com/questions/39429373/need-vbs-code-to-saveas-xlsm
  3. https://stackoverflow.com/questions/35132469/vbscript-to-open-an-excel-file-and-then-do-a-save-as
  4. https://stackoverflow.com/questions/20635629/how-to-add-date-and-time-to-file-name-using-vba-in-excel
  5. https://coderoad.ru/20635629/%D0%9A%D0%B0%D0%BA-%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D0%B4%D0%B0%D1%82%D1%83-%D0%B8-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F-%D0%B2-%D0%B8%D0%BC%D1%8F-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8F-VBA-%D0%B2-Excel

Собственно фрагмент кода:

```  Dim objExcel, activeWB, activeSheet,objWorkbook,Storage_Path
    Dim tp, strPath, Fn
    Set objExcel = CreateObject("Excel.Application")
    Storage_Path = "D:\Stat\" 
    Fn = Format(CStr(Now), "yyyy_mm_dd_hh_mm_ss_")
    tp = ".xlsx"
    strPath = Storage_Path&Fn&tp
    objExcel.Visible = False
    
    Set objWorkbook = objExcel.Workbooks.Add ()
    'objExcel.workbooks.SaveAs SaveDateTime(String)
    objExcel.ActiveSheet.Columns("A").ColumnWidth = 20
    objExcel.ActiveSheet.Columns("B").ColumnWidth = 45
    objExcel.ActiveSheet.Columns("C").ColumnWidth = 15
    '
    objExcel.ActiveSheet.Cells(1,1).Value="Отчет"
    objExcel.ActiveSheet.Cells(1,1).Font.Bold = True
    objExcel.ActiveSheet.Range("A1:C1").Font.Size = 20
    objExcel.ActiveSheet.Range("A1:C1").Borders.LineStyle = 1
    objExcel.ActiveSheet.Range("A1:C1").MergeCells = True
    objExcel.ActiveSheet.Cells(1,1).HorizontalAlignment = -4108
    '
    objExcel.ActiveSheet.Range("A2:C2").Font.Bold = True
    objExcel.ActiveSheet.Range("A2:C2").Font.Size = 14
    objExcel.ActiveSheet.Range("A2:C2").Borders.LineStyle = 1
    objExcel.ActiveSheet.Range("A2:C2").HorizontalAlignment = -4108
    objExcel.ActiveSheet.Cells(2,1).Value="Продукт"
    objExcel.ActiveSheet.Cells(2,2).Value="Время"
    objExcel.ActiveSheet.Cells(2,3).Value="Сумма"
    objExcel.ActiveSheet.Range("A2:C2").WrapText = True
    
    
    Dim index,element
    index=3
    
    For Each element In items
        Dim subelement
        subelement = Split(element, ";")
        If UBound(subelement)>=2 Then 
            objExcel.ActiveSheet.Range("A"+CStr(index)+":C"+CStr(index)).Font.Size = 13
            objExcel.ActiveSheet.Range("A"+CStr(index)+":C"+CStr(index)).WrapText = True
            objExcel.ActiveSheet.Range("A"+CStr(index)+":C"+CStr(index)).Borders.LineStyle = 1
            objExcel.ActiveSheet.Range("A"+CStr(index)+":C"+CStr(index)).HorizontalAlignment = -4108
            objExcel.ActiveSheet.Cells(index,1).Value=subelement(0)
            objExcel.ActiveSheet.Cells(index,2).Value=subelement(1)
            objExcel.ActiveSheet.Cells(index,3).Value=subelement(2)
        End If
        index=index+1
    Next
    ' Save and quit.
    
    objExcel.ActiveWorkbook.SaveAs (strPath)
    objExcel.ActiveWorkbook.Close
    objExcel.Application.Quit
    'objExcel.workbooks.SaveAs "D:\Stat\1.xlsx"
    'objExcel.workbooks.close
    'objExcel.quit
    'Set objExcel = Nothing
    Set objExcel = Nothing 
End Sub   ``` 

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

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

Ошибка связана с неправильным использованием Format

Рабочий код:

Function FormatDateYYYYMMDD(D)
    FormatDateYYYYMMDD = Year(D) & "_" & Format2DigitString(Month(D)) & "_" & Format2DigitString(Day(D))
End Function

Function FormatDateYYYYMMDDHHMMSS(D)
    FormatDateYYYYMMDDHHMMSS = FormatDateYYYYMMDD(D) &  "_" & Format2DigitString(Hour(D)) &  "_" & Format2DigitString(Minute(D)) &  "_" & Format2DigitString(Second(D))
End Function

Function Format2DigitString(N)
    If N >= 10 Then
        Format2DigitString= Format2DigitString & N
    Else
        Format2DigitString= Format2DigitString & "0" & N
    End If
End Function

    Dim objExcel, activeWB, activeSheet,objWorkbook,Storage_Path
    Dim tp, strPath, Fn
    Storage_Path = "F:\Test\" 
    Fn = FormatDateYYYYMMDDHHMMSS(Now)
    tp = ".xlsx"
    strPath = Storage_Path & Fn & tp
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = False
    
    Set objWorkbook = objExcel.Workbooks.Add ()
' Здесь что-то написать в новую книгу:
    objWorkbook.Worksheets(1).Range("A1").Value = "Эта новая книга будет сохранена в " & strPath
    objWorkbook.SaveAs (strPath)
    objWorkbook.Close
    objExcel.Application.Quit
 
    Set objExcel = Nothing 
 
→ Ссылка