2015-05-22 16 views
4

我剛寫完一個自動生成報告的漂亮的宏。它運行良好,但我需要它根據兩個單元格中的數據自動命名電子表格。如何通過引用兩個單元格自動命名電子表格?

本質上,這個宏創建一個新的電子表格,將信息複製到它,並創建每月需要的相關數據透視表。

作爲其中的一部分,我創建了一個儀表板,用於生成包含指令和報告所涉及的日期範圍的報告。它目前創建電子表格「NEW REPORT」。有沒有辦法自動創建新的電子表格並將其命名爲「Report 01.01.15 to 01.02.15」?

我已經將日期範圍作爲兩個單獨的單元格,並且我知道必須確保日期範圍是使用允許的字符(IE 01.01.15而不是01/01/15)的日期範圍) - 我說得有道理,告訴用戶他們把日期與錯誤的分隔符放在一起嗎?

+2

如何'工作表(1),請將.Name =日(yourDate) 「」 &Month(yourDate)&「。」 &Year(yourDate)'? – Ralph

+1

我不認爲這些分離器是不正確的,因爲大多數世界人口似乎都使用這種格式。 [不同的國家使用不同的格式。](https://en.wikipedia.org/wiki/Date_format_by_country) – Ralph

回答

8
Option Explicit 
Sub SaveAs() 

    Dim FileName As String 
    Dim FilePath As String 
    Dim FName  As String 

    FilePath = "C:\Temp" 
    FileName = Sheets("Sheet1").Range("A1").Text 
    FName = Sheets("Sheet1").Range("B1").Text 
    ThisWorkbook.SaveAs FileName:=FilePath & "\" & FileName & FName 

End Sub 

要保存它今天的日期

Dim sSave  As String 
sSave = "Reports " & Format(Date, "dd-mm-yyyy") 

明天

或日期

"Reports" & Format(Date + 1, "dd-mm-yyyy") 

對於File Format See Examples

ThisWorkbook.SaveAs Filename:=FilePath, fileformat:=52 

這些是主要的Excel文件格式2007-2013

51 = xlOpenXMLWorkbook (without macro's in 2007-2013, xlsx) 
52 = xlOpenXMLWorkbookMacroEnabled (with or without macro's in 2007-2013, xlsm) 
50 = xlExcel12 (Excel Binary Workbook in 2007-2013 with or without macro's, xlsb) 
56 = xlExcel8 (97-2003 format in Excel 2007-2013, xls) 

Or maybe you want to save the one worksheet workbook to csv, txt or prn. 

".csv": FileFormatNum = 6 
".txt": FileFormatNum = -4158 
".prn": FileFormatNum = 36 

新的工作簿,然後你需要保存它

之前將表複製到僅保存一個表
Option Explicit 
Sub SaveAs() 
    Dim Sht As Worksheet 
    Dim FileName As String 
    Dim FilePath As String 

    FilePath = "C:\Temp" 
    FileName = Sheets("Sheet1").Range("A1").Text 

    Set Sht = ActiveWorkbook.Sheets("Sheet1") 

    Sht.Copy 

    ActiveWorkbook.SaveAs FileName:=FilePath & "\" & FileName 

End Sub 

要將多個工作表另存爲新的工作簿然後使用Sheets(Array("Sheet1", "Sheet2")).Copy

Option Explicit 
Sub SaveAs() 
    Dim Sht As Worksheet 
    Dim Book As Workbook 
    Dim FileName As String 
    Dim FilePath As String 

    FilePath = "C:\Temp" 
    FileName = Sheets("Sheet1").Range("A1").Text 

    Set Book = ActiveWorkbook 

    With Book 
     .Sheets(Array("Sheet1", "Sheet2")).Copy 
    End With 

    ActiveWorkbook.SaveAs FileName:=FilePath & "\" & FileName 

End Sub 
+1

尼斯:)。建議您包含fileformat :)請參閱[This](http://www.rondebruin.nl/win/s5/win001.htm) –

+1

感謝Omar和@Ralph - 非常有幫助! :) – Miller86

+1

有沒有一種方法可以調整這個來創建一個全新的電子表格,並保留當前的電子表格? – Miller86

相關問題