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