Как я могу назвать файл в VBA

#excel #vba

Вопрос:

Очень простая проблема:

Я настраиваю шаблон счета-фактуры для автоматического создания нового номера счета-фактуры и автоматического сохранения в Excel. Мой формат номера счета: ABC/0001/2021-2022 (Название компании, которое является фиксированным косая черта Номер счета-фактуры будет автоматически обновляться с каждым счетом-фактурой косая черта финансовый год)

Я автоматически сохраняю счет в формате xlsx и pdf, и имя файла будет сохранено в соответствии с форматом номера счета(«ABC/0001/2021-2022 или в любом другом формате, который вы указали»).

Теперь для меня этого не происходит, потому что в моем формате номера счета-фактуры есть косая черта, которая является недопустимым символом для имени файла.

Поэтому я хочу автоматически сохранить свой файл как ABC-0001, ABC-0002 и так далее.

Совместное использование кода:

 Sub NextInvoice()
    LeftPart = Left(Range("D12").Value, 4)
    Midpart = Mid(Range("D12").Value, 5, 4)   1
    Midpart = Format(Midpart, "0000")
    EndPart = Mid(Range("D12").Value, 9, 10)
    Range("D12").Value = LeftPart amp; Midpart amp; EndPart
End Sub

Sub SaveInvoiceBothWaysAndClear()
    Dim NewFN As Variant
    ' Create the PDF First
    ActiveSheet.Copy
    ActiveSheet.Shapes("Rectangle 2").Delete
    ActiveSheet.Shapes("Oval 1").Delete
    ActiveSheet.Shapes("Isosceles Triangle 3").Delete
    ActiveSheet.Shapes("Arrow: Pentagon 6").Delete
    ActiveSheet.Shapes("Arrow: Left-Right 7").Delete
    NewFN = "D:My dataInvoicePDFABC-" amp; Range("D12").Value amp; ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NewFN, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    ' Next, Save the Excel File
    NewFN = "D:My dataInvoiceExcelABC-" amp; Range("D12").Value amp; ".xlsx"
    ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook
    ActiveWorkbook.Close
    Range("A20:C29").ClearContents
    NextInvoice
End Sub
 

Комментарии:

1. Ты забыл задать вопрос.

Ответ №1:

Возможно, использовать Замену

 Option Explicit

Sub demo()
    Dim NewFN  As String
    NewFN = "D:My dataInvoicePDF" amp; Replace(Range("D12").Value, "/", "-") amp; ".pdf"
    MsgBox NewFN
End Sub

Sub NextInvoice()
    Dim ar
    ar = Split(Range("D12"), "/")
    ar(1) = Format(ar(1)   1, "0000")
    Range("D12") = Join(ar, "/")
End Sub