2013-06-21 49 views
0

我試圖在Visual Basic中編寫一個函數,以根據某些單元格中的值創建電子表格的文件名。Visual Basic Excel函數將文件命名爲單元格內容

到目前爲止,我一直在用這個代碼:

Public Sub SaveAsA1() 
ThisFile = "RWO_" + Format(Now(), "yyyymmdd") + "_" + Format(Now(), "hhmm") + "_" + Range("D4").Value + "_" + Range("F5").Value + "_" + Range("D8").Value 
ActiveWorkbook.SaveAs Filename:=ThisFile 
End Sub 

此代碼的工作,我第一次保存的文件,但是,每當我重新保存文件的基礎上,新的價值觀不更新文件名在細胞中。

有誰知道我該怎麼去寫一個函數來做到這一點?

+0

你有任何錯誤信息?它是否會更改名稱的時間和日期部分,或者它不會在名稱內改變任何內容? –

+0

它不會引發任何錯誤。修改後名稱中的任何內容都不會改變,包括日期和時間。 –

+2

將名稱的一部分更改爲:Format(Now(),「hhmmss」)'以便在以這種方式在立即窗口中測試時看到它正在工作:'? 「格式(現在(),」yyyymmddss「)+」_「+格式(現在(),」hhmm「)+」_「+範圍(」D4「)。 F5「)。值+」_「+範圍(」D8「)。值是否...是否? –

回答

3

您可以嘗試添加代碼BeforeSave event。它會正常保存文件,但會按照您的預期每次按SaveAs button更改名稱。

該代碼應位於ThisWorkbook模塊(工作簿模塊)中。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

    If SaveAsUI = True Then 

     Application.EnableEvents = False 
     Dim ThisFile As String 

     ThisFile = "RWO_" + Format(Now(), "yyyymmdd") + "_" + Format(Now(), "hhmmss") + "_" + Range("D4").Value + "_" + Range("F5").Value + "_" + Range("D8").Value & ".xlsm" 
     ActiveWorkbook.SaveAs Filename:=ThisFile, FileFormat:=XlFileFormat.xlOpenXMLWorkbookMacroEnabled 
     Application.EnableEvents = True 
     Cancel = True 
    End If 

End Sub 

請注意,我加入ss時間和結束.xlsm擴展已經改變ThisFile。我還添加了FileFormat parameter.SaveAs method

+0

非常感謝。這正是我想要做的。 –

+0

搞清楚並實施,+1 –

相關問題