Create well-organized and polished visualizations of your virtual and backup environments when planning VMware vSphere, Microsoft Hyper-V or Veeam deployments. It helps you to gain better visibility and valuable business insights.
Sub Mail_ActiveSheet() ' Works in Excel 97 through Excel 2007. Dim FileExtStr As String Dim FileFormatNum As Long Dim Sourcewb As Workbook Dim Destwb As Workbook Dim TempFilePath As String Dim TempFileName As String With Application .ScreenUpdating = False .EnableEvents = False End With Set Sourcewb = ActiveWorkbook ' Using ActiveSheet.Copy creates a new workbook with ' the sheet and the file format is the same as the ' original workbook. ' Copy the worksheet 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 are using Excel 97-2003. FileExtStr = ".xls": FileFormatNum = -4143 Else ' You are using Excel 2007. ' When you use ActiveSheet.Copy to create a workbook, ' you are prompted with a security dialog. If you click No ' in the dialog, then the name of Sourcewb is the same ' as Destwb and you exit the subroutine. You only see this ' dialog when you attempt to copy a worksheet from an .xlsm file with macros disabled. If Sourcewb.Name = .Name Then With Application .ScreenUpdating = True .EnableEvents = True End With MsgBox "Your answer is No in the security dialog." Exit Sub Else Select Case Sourcewb.FileFormat ' Code 51 represents the enumeration for a macro-free ' Excel 2007 Workbook (.xlsx). Case 51: FileExtStr = ".xlsx": FileFormatNum = 51 ' Code 52 represents the enumeration for a ' macro-enabled Excel 2007 Workbook (.xlsm). Case 52: If .HasVBProject Then FileExtStr = ".xlsm": FileFormatNum = 52 Else FileExtStr = ".xlsx": FileFormatNum = 51 End If ' Code 56 represents the enumeration for a ' a legacy Excel 97-2003 Workbook (.xls). Case 56: FileExtStr = ".xls": FileFormatNum = 56 ' Code 50 represents the enumeration for a ' binary Excel 2007 Workbook (.xlsb). Case Else: FileExtStr = ".xlsb": FileFormatNum = 50 End Select End If End If End With ' Change all cells in the worksheet to values, if desired. '' With Destwb.Sheets(1).UsedRange '' .Cells.Copy '' .Cells.PasteSpecial xlPasteValues '' .Cells(1).Select '' End With ''Application.CutCopyMode = False 'Save the new workbook and then mail it. TempFilePath = Environ$("temp") & "\" TempFileName = ActiveSheet.Name With Destwb .SaveAs TempFilePath & TempFileName, FileFormat:=FileFormatNum On Error Resume Next .SendMail "", _ "Subject of email goes here" On Error GoTo 0 .Close SaveChanges:=False End With ' Delete the file you just sent. Kill TempFilePath & TempFileName & FileExtStr With Application .ScreenUpdating = True .EnableEvents = True End With End Sub
Add your voice to the tech community where 5M+ people just like you are talking about what matters.
Join the community of 500,000 technology professionals and ask your questions.