保存时设置默认文件名的Excel宏

保存时设置默认文件名的Excel宏,excel,excel-2010,vba,Excel,Excel 2010,Vba,我不是程序员,但我对它有一点了解。我目前在word中有一个宏,它用默认名称和当前日期保存新文档。我试图在Excel2010中做同样的事情,但不知道如何做 任何帮助都将不胜感激。 这是我使用的单词的宏 Sub FileSave() If ActiveDocument.Path = "" Then With Dialogs(wdDialogFileSaveAs) .Name = MakeDocName .Sho

我不是程序员,但我对它有一点了解。我目前在word中有一个宏,它用默认名称和当前日期保存新文档。我试图在Excel2010中做同样的事情,但不知道如何做

任何帮助都将不胜感激。 这是我使用的单词的宏

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

根据评论更新。保存任何打开的文档时,将此代码添加到
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

根据评论更新。保存任何打开的文档时,将此代码添加到
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

使用内置的
.GetSaveAsFilename

语法是

expression.GetSaveAsFilename(InitialFilename、FileFilter、FilterIndex、Title、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
选项显式
子样本()
暗网
将初始化文件设置为字符串
InitFile=“MyFile”保存文件的代码
'
如果结束
端接头

使用内置的
.GetSaveAsFilename

语法是

expression.GetSaveAsFilename(InitialFilename、FileFilter、FilterIndex、Title、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
选项显式
子样本()
暗网
将初始化文件设置为字符串
InitFile=“MyFile”保存文件的代码
'
如果结束
端接头

你真的应该试着用Excel VBA编写它(从你的VBA代码开始),然后看看你有什么具体问题,并就这些问题提问。在我看来,除了对话框功能行可能需要更改外,它大部分都可以工作。首先,Word中的
ActiveDocument
是Excel中的
ActiveWorkbook
。您应该尝试用Excel VBA编写它(从您的Word VBA代码开始),然后查看您有哪些具体问题,并就此提出问题。在我看来,除了对话框功能行可能需要更改外,它大部分都可以工作。首先,Word中的
ActiveDocument
是Excel中的
ActiveWorkbook
。+1!我今天跑得很慢,你的
.GetSaveAsFilename
:)+1领先于我!今天我的速度很慢,你的
.GetSaveAsFilename
:)领先于我。谢谢你的帮助,我将这个宏保存在一个名为book.xlt的文件中,并将它放在xlstart文件夹中,当我启动excel时,它就在那里,但它似乎没有任何作用。这是正确的程序吗?你期望它做什么?我希望我能像我在上面发布的Word中一样做。在word中,当任何人保存新文档或执行另存为时。文档名是这样预先填充的。“DocType_DocDescription_2014-02-03.docx”,这样用户就知道他们需要输入文档类型和描述。日期会自动填充。感谢您的帮助,我将此宏保存在一个名为book.xlt的文件中,并将其放在xlstart文件夹中,当我启动excel时它就在那里,但它似乎没有任何作用。这是正确的程序吗?你期望它做什么?我希望我能像我在上面发布的Word中一样做。在word中,当任何人保存新文档或执行另存为时。文档名是这样预先填充的。“DocType_DocDescription_2014-02-03.docx”,这样用户就知道他们需要输入文档类型和描述。日期将自动填充。