2014-01-30 56 views
1

我不是程序員,但我對此有所瞭解。我目前有一個用word保存一個默認名稱和當前日期的新文檔。我正在嘗試在Excel 2010中做同樣的事情,但不知道如何。Excel宏在保存時設置默認文件名

任何幫助將不勝感激。 這是我使用的單詞的宏。

Sub FileSave() 
    If ActiveDocument.Path = "" Then 
       With Dialogs(wdDialogFileSaveAs) 
      .Name = MakeDocName 
      .Show 
     End With 
    Else 
     ActiveDocument.Save 
    End If 
End Sub 

Function MakeDocName() As String 
    Dim theName As String 
    Dim uscore As String 
    uscore = "_" 

    theName = "DocType_DocDescription_" 
    theName = theName & Format(Now, "yyyy-mm-dd") 



    MakeDocName = theName 
End Function 

Sub FileSaveAs() 
    With Dialogs(wdDialogFileSaveAs) 
      .Name = MakeDocName 
      .Show     
End With 

End Sub 
+0

你應該真的嘗試把它寫在Excel VBA中(通過從你有的Word VBA代碼開始),然後看看你有什麼具體問題,並就這些問題提出問題。它看起來像它會主要工作,除了對話框功能行可能需要改變。 –

+0

首先,Word中的「ActiveDocument」是Excel中的「ActiveWorkbook」。 –

回答

2

更新爲迴應評論。將此代碼添加到ThisWorkbook模塊將在保存任何打開的文檔時生成自定義的文件名。

Option Explicit 
Private WithEvents App As Excel.application 

Private Sub Workbook_Open() 
    Set App = application 
End Sub 

Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    App.EnableEvents = False 
    If Wb.Path = "" Then 
     With App.Dialogs(xlDialogSaveAs) 
      Call .Show(MakeDocName, xlOpenXMLWorkbookMacroEnabled) 
     End With 
    Else 
     Wb.Save 
    End If 
    App.EnableEvents = True 
    Cancel = True 
End Sub 


Function MakeDocName() As String 
    Dim theName As String 
    Dim uscore As String 
    uscore = "_" 

    theName = "DocType_DocDescription_" 
    theName = theName & Format(Now, "yyyy-mm-dd") 

    MakeDocName = theName 
End Function 
+0

感謝您的幫助,我將這個宏保存在一個名爲book.xlt的文件中,並將其放入xlstart文件夾中,當它啓動時,它出現在excel中,但它沒有出現任何操作。這是正確的程序嗎? – user3254556

+0

你期待它做什麼? – Joe

+0

我希望的是,我可以像我在Word中那樣做,我在上面發佈。在任何人保存一個新文檔或者另存爲時,用詞來形容。文檔名稱預先填充像這樣。 「DocType_DocDescription_2014-02-03.docx」 這樣用戶就知道他們需要放入文檔類型和描述。日期自動填充。 – user3254556

1

使用內置.GetSaveAsFilename

語法

expression.GetSaveAsFilename(InitialFilename,一個FileFilter,FilterIndex,標題,ButtonText)

Option Explicit 

Sub Sample() 
    Dim Ret 
    Dim InitFile As String 

    InitFile = "MyFile" '<~~ You can set Default name here 

    Ret = Application.GetSaveAsFilename(InitialFileName:=InitFile, _ 
             fileFilter:="Excel Files (*.xlsx), *.xlsx", _ 
             FilterIndex:=1, _ 
             Title:="Save As") 

    If Ret <> False Then 
     ' 
     '~~> Code to save the file 
     ' 
    End If 
End Sub 
+1

+1!我今天很慢,你用'.GetSaveAsFilename' :)在我面前 –

相關問題