Excel – Заполнитель соответствия с действительным значением в VBA

Я хочу создать редактируемый шаблон электронной почты, где каждый может обновить адрес электронной почты и назначить, кому он хочет отправить это электронное письмо. Шаблоны электронной почты находятся на другом листе. Каждый шаблон имеет свой собственный идентификатор электронной почты. введите описание изображения здесь

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

Пока что я работаю над шаблоном электронной почты. Но сейчас он просто захватывает все значение из ячейки. Это прерывается, когда я добавляю столбцы или строки.

Sub Mail_with_outlook2() Dim mainWB As Workbook Dim otlApp As Object Dim olMail As Object Dim olMailItem As Object Dim Doc As Object Dim SendID Dim CCID Dim Subject Dim Body Dim WrdRng As Object Dim result Dim i As Long Set otlApp = CreateObject("Outlook.Application") Set olMail = otlApp.CreateItem(0) Set mainWB = ActiveWorkbook SendID = mainWB.Sheets("Email Template").Range("C3").Value CCID = mainWB.Sheets("Email Template").Range("D3").Value Subject = mainWB.Sheets("Email Template").Range("E3").Value Body = mainWB.Sheets("Email Template").Range("F3").Value Dim splitBody splitBody = Split(Body, "<%") For i = 0 To UBound(splitBody) result = Replace(Body, ">", "K") Next i With olMail .to = SendID If CCID <> "" Then .CC = CCID End If .Subject = Subject .Display End With Set Doc = olMail.GetInspector.WordEditor Set WrdRng = Doc.Range(Start:=0, End:=0) WrdRng.Select mainWB.Sheets("Email Template").Range("F3").Copy WrdRng.Paste MsgBox ("you Mail has been sent to " & SendID) End Sub 

Таблица + Функция соответствия

Подумайте о том, чтобы превратить данные вашего шаблона в таблицу Excel. Затем вы можете использовать «табличный объект». ListObject ссылается на его столбцы по их имени (заголовки столбцов).

Чтобы найти относительное положение идентификатора внутри таблицы, вы можете использовать WorksheetFunction.Match .

Код с примерами

В моем коде, где параметры для почтового шаблона называются «IssueTemplates».
Таблица называется «IssueTemplatesTable».

 Sub GetDataFromTable() Dim IssueTemplatesTable As ListObject Dim ID_Searched As Integer 'Input variable Dim ID_RelativeRow As Integer 'Input relative row inside the table Dim Var1 As String 'Output variable Set IssueTemplatesTable = ThisWorkbook.Sheets("IssueTemplates").ListObjects("IssueTemplatesTable") '''''''''''''''''EXAMPLE 1''''''''''''''''''''''''' ID_Searched = 17 'Input: "No" of template With IssueTemplatesTable ID_RelativeRow = WorksheetFunction.Match(ID_Searched, .ListColumns("No").DataBodyRange, 0) Var1 = .DataBodyRange(ID_RelativeRow, .ListColumns("Issue Type").Index) End With 'IssueTemplatesTable MsgBox Var1 'Output: "Others" '''''''''''''''''EXAMPLE 2''''''''''''''''''''''''' ID_Searched = 25 'Input: "No" of template With IssueTemplatesTable ID_RelativeRow = WorksheetFunction.Match(ID_Searched, .ListColumns("No").DataBodyRange, 0) Var1 = .DataBodyRange(ID_RelativeRow, .ListColumns("Issue Type").Index) End With 'IssueTemplatesTable MsgBox Var1 'Output: "Mapping" End Sub 
  • Как получить данные в файле excel (используя NPOI)
  • Отправить письмо от IBM Notes с приложением
  • Как я могу удалить элемент из массива?
  • Как переносить таблицы в сообщениях Outlook 2010 в Excel 2010
  • Экспорт информации электронной почты Outlook в книгу Excel
  • Изменение тега категории по электронной почте в соответствии с данными в excel
  • Excel 2010 Вставить диапазон и изображение в Outlook
  • Отправка электронной таблицы по электронной почте vba
  • Как остановить запуск кода VBA на основе событий, когда в электронной таблице есть ошибка?
  • Отправлять электронные письма CDO с любого клиента / сервера с помощью Excel
  • Отправить содержимое листа excel в почтовом теле с использованием jenkins
  • Interesting Posts

    MS Excel добавляет разрыв строки при копировании ячейки

    Значение, разделенное запятыми столбцам в Excel

    Как повторно выполнить такую ​​же функцию во время выполнения

    C # – Транспонировать таблицу excel с помощью Interop

    Извлечение чисел из текстовых и текстовых ячеек

    Как выводить наиболее распространенное значение, но не если оно равномерно с чем-то другим

    Codeigniter – загрузить xls или xlsx и отправить данные в текущий вид

    Могут ли проекты VSTO, построенные с использованием, например, Microsoft.Office.Interop.Excel, запускаться на компьютерах без установленного Office?

    Регулярное выражение для выбора всего после 3-го вхождения

    Изменение фильтра сводной таблицы на основе выпадающего

    R: чтение нескольких файлов excel, извлечение первых имен листов и создание нового столбца

    Формат ячейки даты даты в excel xml

    написать в excel в java с помощью библиотеки Java Excel – открыть файл

    Как прочитать определенный лист в файле Excel с помощью Microsoft.Office.Interop.Excel

    Использование глобальных констант для хранения переменных среды

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