VBA Excel: вставьте экстракт электронной таблицы в электронную почту Outlook

Я хочу иметь возможность запускать макрос в Excel, который копирует определенные области моей таблицы Excel, открывает новое электронное письмо и вставляет области. До сих пор у меня есть следующий код:

Sub Macro2() ' 'Macro2 Macro Dim objOutlook As Object Dim objMail As Object Dim TempFilePath As String Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) Dim rng As Range 'Set rng = Selection.SpecialCells(xlCellTypeVisible) Set rng = ActiveSheet.Range("A4:E200").Rows.SpecialCells(xlCellTypeVisible) If rng Is Nothing Then MsgBox "The selection is not a range or the sheet is protected" & _ vbNewLine & "please correct and try again.", vbOKOnly Exit Sub End If With objMail ActiveSheet.Range("$A$3:$P$197").AutoFilter Field:=4, Criteria1:="10" Range("B171:F184,I171:J184").Select Range("I171").Activate Range("B171:F184,I171:J184,M171:N184").Select Range("M171").Activate Selection.Copy .To = "" .CC = "" .Subject = "" .HTMLBody = RangetoHTML(rng) .Display End With Set objOutlook = Nothing Set objMail = Nothing End Sub Function RangetoHTML(rng As Range) ' Changed by Ron de Bruin 28-Oct-2006 ' Working in Office 2000-2013 Dim fso As Object Dim ts As Object Dim TempFile As String Dim TempWB As Workbook TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" 'Copy the range and create a new workbook to past the data in rng.Copy Set TempWB = Workbooks.Add(1) With TempWB.Sheets(1) .Cells(1).PasteSpecial Paste:=8 .Cells(1).PasteSpecial xlPasteValues, , False, False .Cells(1).PasteSpecial xlPasteFormats, , False, False .Cells(1).Select Application.CutCopyMode = False On Error Resume Next .DrawingObjects.Visible = True .DrawingObjects.Delete On Error GoTo 0 End With 'Publish the sheet to a htm file With TempWB.PublishObjects.Add( _ SourceType:=xlSourceRange, _ Filename:=TempFile, _ Sheet:=TempWB.Sheets(1).Name, _ Source:=TempWB.Sheets(1).UsedRange.Address, _ HtmlType:=xlHtmlStatic) .Publish (True) End With 'Read all data from the htm file into RangetoHTML Set fso = CreateObject("Scripting.FileSystemObject") Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2) RangetoHTML = ts.readall ts.Close RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _ "align=left x:publishsource=") 'Close TempWB TempWB.Close savechanges:=False 'Delete the htm file we used in this function Kill TempFile Set ts = Nothing Set fso = Nothing Set TempWB = Nothing End Function 

Этот код почти делает то, что я хочу, он копирует фильтры по критерию 10 в столбце D и копирует и вставляет это в электронное письмо.

Но я хочу, чтобы код прошел через отфильтрованные ячейки (может быть, критерии 1, 2, 3 … и т. Д., А не жестко закодированные критерии, как есть в минуту), а также скопировать и вставить конкретные столбцы в Эл. адрес.

Например, я хочу отфильтровать колонку Queen in the Band ниже и скопировать и вставить столбцы C (Полное имя) и D (Band) в электронное письмо.

  ABCD 1 First name: Last name: Full Name: Band: 2 Freddie Mercury Freddie Mercury Queen 3 Brian May Brian May Queen 4 Kurt Cobain Kurt Cobain Nirvana 5 Roger Taylor Roger Taylor Queen 6 Dave Grohl Dave Grohl Nirvana 7 John Deacon John Deacon Queen 8 Kris Novoselic Kris Novoselic Nirvana 

Есть ли способ сделать это? Любая помощь будет оценена по достоинству.

Что мне нужно было сделать, это изменить Set rng = ActiveSheet.Range("A4:E200").Rows.SpecialCells(xlCellTypeVisible) в диапазон, который мне нужен, поэтому Set rng = ActiveSheet.Range("B4:E200, I4:J200, M4:N200").Rows.SpecialCells(xlCellTypeVisible)

Это было похоже на комментарий, предоставленный @Ralph, но с разными диапазонами.

  • Форматирование форматирования электронной почты Outlook Excel VBA
  • Как изменить формат даты в Outlook, когда я отправляю почту, связанную с данными Excel?
  • Excel vba: диапазон для отправки по почте - гиперссылка
  • Использование VBA для вставки диапазона в Outlook не вставляет ничего
  • Переформатирование некоторых списков рассылки в зависимости от файла excel
  • Скопировать тему электронной почты в Outlook для Excel с помощью vba с двумя адресами электронной почты?
  • Dwonload от конкретного отправителя и открыть в excel
  • Excel VBA - рассылка по электронной почте в виде таблицы для соответствия электронной почте в столбце
  • Прокрутите вниз и создайте отдельный почтовый ящик Outlook
  • Отправить почту через Outlook - Ошибка 287
  • Включить вложение, где имя совпадает с именем получателя
  • Interesting Posts

    скрыть все повторяющиеся столбцы в excel

    Редактируйте некоторые excel-ячейки с clojure docjure

    Копировать вставку с VBA и списком

    Как игнорировать конкретное слово из группы слов в ячейке и отправлять одно сообщение группе людей?

    Excel исключает расчет рабочего времени диапазона дат для нерабочих дней

    Как удалить предупреждение в Excel с помощью apache poi в JAVA?

    VBA читается диапазон объединения по горизонтали

    Рисование конкретных данных из больших таблиц?

    Прочитайте несколько строк, проиндексированных серией объединенных ячеек из Excel с использованием Apache POI

    Как создать параметр загрузки для динамически созданной книги

    Как преобразовать javadoc в excel

    Изменение цвета шрифта для определенного символа в диапазоне ячеек

    Упростите список выделенных ячеек для создания диапазона

    Как заставить эту программу открывать последнюю измененную книгу даты по дате в названии

    Использование кода Excel VBA для отправки POST и получения данных

    Давайте будем гением компьютера.