так как два вопроса в одной теме задавать нельзя, вдогонку предыдущему задам еще один вопрос. На просторах интернета нашел код для отправки через Outlook активного Листа из рабочей книги Но проблема в том, что на листе присутствуют фигуры и элементы управления, которые тоже отправляются почтой. Вопрос, можно ли, сделать так что бы отправлялась только текстовая часть документа?
так как два вопроса в одной теме задавать нельзя, вдогонку предыдущему задам еще один вопрос. На просторах интернета нашел код для отправки через Outlook активного Листа из рабочей книги Но проблема в том, что на листе присутствуют фигуры и элементы управления, которые тоже отправляются почтой. Вопрос, можно ли, сделать так что бы отправлялась только текстовая часть документа?ProstaK
and_evg, это я могу сделать, но вопрос можно ли сделать, что бы исходный файл остался со всеми элементами, а вложение к письму них, при этом не закрывая основной файл.
and_evg, это я могу сделать, но вопрос можно ли сделать, что бы исходный файл остался со всеми элементами, а вложение к письму них, при этом не закрывая основной файл.ProstaK
Создайте копию листа, и уже из неё удалите всё ненужное. Затем отправьте эту копию (в аутлуке создастся собственное вложение). После этого лист-копию можно удалить без сожаления.
Ну так а в чем проблема?
Создайте копию листа, и уже из неё удалите всё ненужное. Затем отправьте эту копию (в аутлуке создастся собственное вложение). После этого лист-копию можно удалить без сожаления.AndreTM
Sub Почта() 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 ActiveSheet.Copy ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value ActiveSheet.Buttons.Delete ActiveSheet.DrawingObjects.Delete ActiveSheet.Buttons.Delete Set Destwb = ActiveWorkbook With Destwb If Val(Application.Version) < 12 Then FileExtStr = ".xls": FileFormatNum = -4143 Else 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 TempFilePath = Environ$("temp") & "\" TempFileName = Sheets("Лист1").Range("a15") 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 = "" .Body = "" .Attachments.Add Destwb.FullName .Display End With On Error GoTo 0 .Close savechanges:=False End With Kill TempFilePath & TempFileName & FileExtStr Set OutMail = Nothing Set OutApp = Nothing With Application .ScreenUpdating = True .EnableEvents = True End With End Sub
[/vba]
Переделал под себя и ответил на вопрос ТС [vba]
Код
Sub Почта() 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 ActiveSheet.Copy ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value ActiveSheet.Buttons.Delete ActiveSheet.DrawingObjects.Delete ActiveSheet.Buttons.Delete Set Destwb = ActiveWorkbook With Destwb If Val(Application.Version) < 12 Then FileExtStr = ".xls": FileFormatNum = -4143 Else 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 TempFilePath = Environ$("temp") & "\" TempFileName = Sheets("Лист1").Range("a15") 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 = "" .Body = "" .Attachments.Add Destwb.FullName .Display End With On Error GoTo 0 .Close savechanges:=False End With Kill TempFilePath & TempFileName & FileExtStr Set OutMail = Nothing Set OutApp = Nothing With Application .ScreenUpdating = True .EnableEvents = True End With End Sub