Excel VBA另存为名称“ MONTH”,转换为数字(两位数字)

时间:2018-08-03 14:53:04

标签: excel vba excel-vba

我在这里也是VBA中的新手。我试图找出将活动表导出到新工作簿(只是值),并将其保存为特定名称,其中名称的一部分必须月份转换为两位数格式。 更具体地说,“ D4”中有一个月份名称。我需要在新工作簿的名称中使用本月,但转换为两位数格式。

With ActiveSheet
                ActiveSheet.Range("A1:M40").Copy
                    Set NewBook = Workbooks.Add
                    With NewBook
                        NewBook.Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                        SkipBlanks:=False, Transpose:=False
                        Dim LMonth As Integer
                        NewBook.SaveAs Filename:=ThisWorkbook.Path & "\" & Range("D4") & "_" & Range("I2") & "_" & " FLA"
                    End With
          End With

下面是完整的代码,该代码将工作表打印为pdf,然后将工作表导出到新工作簿:

Private Sub Print_PDF_Click()
With ActiveSheet
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
       ThisWorkbook.Path & "\" & ActiveSheet.Name & " " & Range("I2") & " FLA" _
       , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
       :=False, OpenAfterPublish:=True
          With ActiveSheet
                ActiveSheet.Range("A1:M40").Copy
                    Set NewBook = Workbooks.Add
                    With NewBook
                        NewBook.Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                        SkipBlanks:=False, Transpose:=False
                        Dim LMonth As Integer
                        NewBook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(Range("D4"),"mm") & "_" & Range("I2") & "_" & " FLA"
                    End With
          End With
    MsgBox "PDF successfully created!"
End With 
End Sub

请帮助!

2 个答案:

答案 0 :(得分:1)

看起来很有趣,但是尝试

=TEXT(MONTH(DATEVALUE(D4 & "1")),"00")

http://www.exceltip.com/tips/converting-month-name-to-a-number-in-excel-2010-2013.html

答案 1 :(得分:1)

使用等效于@asantaballa的外观奇妙但出色的Excel公式的VBA。

NewBook.SaveAs行的文件名更改为

 Filename:=ThisWorkbook.Path & "\" & Format(DateValue(Range("D4") & " 1"), "mm") & "_" & Range("I2") & "_" & " FLA"

这花费了D4中的月份,并在其上附加了" 1"以使其看起来像真实的日期,然后使用DateValue将其转换为Date值,然后我们可以使用Format从中得出数字。

所以AUGUST在单元格D4中

通过添加“ 1”成为AUGUST 1

通过01/08/2001函数变成DateValue

,其格式设置为mm以产生 08