保存并通过电子邮件发送当前活动工作表的VBA代码 Sub-Mail\u-ActiveSheet() “在Excel 2000-2016中工作 “有关提示,请参阅:http://www.rondebruin.nl/win/winmail/Outlook/tips.htm Dim FileExtStr作为字符串 Dim FileFormatNum尽可能长 将Sourcewb设置为工作簿 将WB设置为工作簿 Dim TempFilePath作为字符串 将文件名设置为字符串 Dim OutApp作为对象 将邮件变暗为对象 应用 .ScreenUpdate=False .EnableEvents=False 以 设置Sourcewb=ActiveWorkbook '将活动工作表复制到新工作簿 活动表,收到 设置Destwb=ActiveWorkbook '确定Excel版本和文件扩展名/格式 用Destwb 如果Val(Application.Version)

保存并通过电子邮件发送当前活动工作表的VBA代码 Sub-Mail\u-ActiveSheet() “在Excel 2000-2016中工作 “有关提示,请参阅:http://www.rondebruin.nl/win/winmail/Outlook/tips.htm Dim FileExtStr作为字符串 Dim FileFormatNum尽可能长 将Sourcewb设置为工作簿 将WB设置为工作簿 Dim TempFilePath作为字符串 将文件名设置为字符串 Dim OutApp作为对象 将邮件变暗为对象 应用 .ScreenUpdate=False .EnableEvents=False 以 设置Sourcewb=ActiveWorkbook '将活动工作表复制到新工作簿 活动表,收到 设置Destwb=ActiveWorkbook '确定Excel版本和文件扩展名/格式 用Destwb 如果Val(Application.Version),vba,excel,Vba,Excel,我已经有一段代码可以保存并通过电子邮件发送我的活动工作表。但我想知道的是,如果我在正在发送的活动工作表的T29单元格中有一个日期,我如何将该日期添加到我的导出文件名,而不是格式(现在是ddmmyyy)行?要从T29获取日期,则需要这样的内容: Sub Mail_ActiveSheet() 'Working in Excel 2000-2016 'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm Dim

我已经有一段代码可以保存并通过电子邮件发送我的活动工作表。但我想知道的是,如果我在正在发送的活动工作表的T29单元格中有一个日期,我如何将该日期添加到我的导出文件名,而不是
格式(现在是ddmmyyy)
行?

要从
T29
获取日期,则需要这样的内容:

Sub Mail_ActiveSheet()
'Working in Excel 2000-2016
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim OutApp As Object
    Dim OutMail As Object

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set Sourcewb = ActiveWorkbook

    'Copy the ActiveSheet to a new workbook
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook

    'Determine the Excel version and file extension/format
    With Destwb
        If Val(Application.Version) < 12 Then
            'You use Excel 97-2003
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            'You use Excel 2007-2016
            Select Case Sourcewb.FileFormat
            Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
            Case 52:
                If .HasVBProject Then
                    FileExtStr = ".xlsm": FileFormatNum = 52
                Else
                    FileExtStr = ".xlsx": FileFormatNum = 51
                End If
            Case 56: FileExtStr = ".xls": FileFormatNum = 56
            Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With

    '    'Change all cells in the worksheet to values if you want
    '    With Destwb.Sheets(1).UsedRange
    '        .Cells.Copy
    '        .Cells.PasteSpecial xlPasteValues
    '        .Cells(1).Select
    '    End With
    '    Application.CutCopyMode = False

    'Save the new workbook/Mail it/Delete it
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "MyFilename " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy")

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        On Error Resume Next
        With OutMail
            .to = ""
            .CC = ""
            .BCC = ""
            .Subject = "MyFilename" & Format(Now, "dd-mmm-yy")
            .Body = ""
            .Attachments.Add Destwb.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            .Send   'or use .Display
        End With
        On Error GoTo 0
        .Close savechanges:=False
    End With

如果要从特定工作表的
T29
获取日期,则还应指定工作表的
格式(工作表(“SomeName”).Range(“T29”),“DDMMYYY”)
。如果您没有指定工作表,它将使用选定的工作表。

要从
T29
获取日期,则需要类似以下内容:

Sub Mail_ActiveSheet()
'Working in Excel 2000-2016
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim OutApp As Object
    Dim OutMail As Object

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set Sourcewb = ActiveWorkbook

    'Copy the ActiveSheet to a new workbook
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook

    'Determine the Excel version and file extension/format
    With Destwb
        If Val(Application.Version) < 12 Then
            'You use Excel 97-2003
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            'You use Excel 2007-2016
            Select Case Sourcewb.FileFormat
            Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
            Case 52:
                If .HasVBProject Then
                    FileExtStr = ".xlsm": FileFormatNum = 52
                Else
                    FileExtStr = ".xlsx": FileFormatNum = 51
                End If
            Case 56: FileExtStr = ".xls": FileFormatNum = 56
            Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With

    '    'Change all cells in the worksheet to values if you want
    '    With Destwb.Sheets(1).UsedRange
    '        .Cells.Copy
    '        .Cells.PasteSpecial xlPasteValues
    '        .Cells(1).Select
    '    End With
    '    Application.CutCopyMode = False

    'Save the new workbook/Mail it/Delete it
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "MyFilename " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy")

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        On Error Resume Next
        With OutMail
            .to = ""
            .CC = ""
            .BCC = ""
            .Subject = "MyFilename" & Format(Now, "dd-mmm-yy")
            .Body = ""
            .Attachments.Add Destwb.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            .Send   'or use .Display
        End With
        On Error GoTo 0
        .Close savechanges:=False
    End With

如果要从特定工作表的
T29
获取日期,则还应指定工作表的
格式(工作表(“SomeName”).Range(“T29”),“DDMMYYY”)
。如果不指定工作表,它将使用选定的工作表。

我希望它从工作表中的特定单元格中获取日期,而不是使用当前系统date@BrianDavies-我明白了。
格式(范围(“T29”),“DDMMYYY”)
如何?谢谢,我可以在excel中做很多工作,但是编码方面需要帮助。真的很感激it@BrianDavies-不客气-我希望它从工作表中的特定单元格中获取日期,而不是使用当前系统date@BrianDavies-我明白了。
格式(范围(“T29”),“DDMMYYY”)
如何?谢谢,我可以在excel中做很多工作,但是编码方面需要帮助。真的很感激it@BrianDavies-不客气-