Гиперссылка для запуска макроса в personal.xlsb

У меня есть столбец в excel с некоторым текстом (дата, отправитель, тема), которые относятся к электронному письму. Проблема в том, что (насколько я знаю) вы можете гиперссылки на электронную почту Outlook в общих папках, потому что электронная почта может перемещаться (ссылка варьируется от pc до pc).

Поэтому моя идея получить это письмо – создать гиперссылку, которая запускает макрос в файле personal.xlsb, чтобы затем искать это письмо и отображать его.

Моя единственная проблема заключается в том, что я не могу понять, как связать текст для запуска макроса, Worksheet_FollowHyperlink означает, что мне нужно поместить этот код в лист, где находится мой текст.

Думаю, я мог бы это сделать, но это означает, что мне нужно создать этот код, когда рабочая книга будет открыта, и удалите ее, когда рабочая книга будет закрыта, если мне не придется переименовывать все файлы xlsx в xlsm, и потому что я не уверен, у коллег есть ссылка на листок excel, я бы хотел этого избежать.

Итак, мой вопрос: есть ли способ сделать гиперссылку на personal.xlsb!ShowEmail(cellValue) ? Или можно сделать прямую ссылку на электронную почту в общей папке? Ниже приведен код для создания текста электронной почты:

 Function getEpostField(projectNumber As String, drawingNumber As String, partNumber As String) As String On Error Resume Next Dim myFolderArray() As String Dim i As Long Dim j As Long Dim k As Long Dim OutApp As Object Dim myNameSpace As Object Dim myFolder As Object Dim myNewFolder As Object Dim TopPublicFolder As Object Dim olMail As Variant Dim myTasks Dim strFilter As String Set OutApp = CreateObject("Outlook.Application") Set myNameSpace = OutApp.GetNamespace("MAPI") Set TopPublicFolder = myNameSpace.GetDefaultFolder(18) getEpostField = "" ' array with all subfolders where the item might be... myFolderArray = Post.helpRequest("XXXXXXXXX") For i = LBound(myFolderArray) To UBound(myFolderArray) Set myFolder = TopPublicFolder.Folders("Prototech").Folders(myFolderArray(i, 2)).Folders For j = 1 To myFolder.Count If InStr(myFolder(j).Name, projectNumber) Then If drawingNumber <> "" And partNumber <> "" Then strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:textdescription" & Chr(34) & " like '%" & drawingNumber & "%' " _ & "or " & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%" & drawingNumber & "%'" _ & "or " & Chr(34) & "urn:schemas:httpmail:attachmentfilename" & Chr(34) & " like '%" & drawingNumber & "%'" _ & "or " & Chr(34) & "urn:schemas:httpmail:textdescription" & Chr(34) & " like '%" & partNumber & "%' " _ & "or " & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%" & partNumber & "%'" _ & "or " & Chr(34) & "urn:schemas:httpmail:attachmentfilename" & Chr(34) & " like '%" & partNumber & "%'" ElseIf drawingNumber <> "" Then strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:textdescription" & Chr(34) & " like '%" & drawingNumber & "%' " _ & "or " & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%" & drawingNumber & "%'" _ & "or " & Chr(34) & "urn:schemas:httpmail:attachmentfilename" & Chr(34) & " like '%" & drawingNumber & "%'" ElseIf partNumber <> "" Then strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:textdescription" & Chr(34) & " like '%" & partNumber & "%' " _ & "or " & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%" & partNumber & "%'" _ & "or " & Chr(34) & "urn:schemas:httpmail:attachmentfilename" & Chr(34) & " like '%" & partNumber & "%'" Else getEpostField = "No emails found" Exit Function End If Set filteredItems = myFolder(j).Items.Restrict(strFilter) If filteredItems.Count = 0 Then Debug.Print "No emails found" getEpostField = "No emails found" found = False Else found = True ' this loop is optional, it displays the list of emails by subject. For Each itm In filteredItems attachmentString = "" If itm.Attachments.Count > 0 Then For Each temp In itm.Attachments temp2 = InStr(temp.filename, drawingNumber) If temp2 > 0 Then attachmentString = attachmentString & temp.filename & " " End If Next temp End If Debug.Print "Dato:" & Format(itm.CreationTime, "mm.dd.yyyy") & " Subject:" & itm.Subject & " From:" & itm.SenderName & " Attachment:" & attachmentString getEpostField = getEpostField + "Dato:" & Format(itm.CreationTime, "mm.dd.yyyy") & " Subject:" & itm.Subject & " From:" & itm.SenderName & " Attachment:" & attachmentString Next End If 'If the subject isn't found: If Not found Then 'NoResults.Show Else Debug.Print "Found " & filteredItems.Count & " items." End If Exit Function End If Next j Next i End Function 

 =HYPERLINK("#personal.xlsb!modUtility.TestHL()","Test") 

и тестовую функцию (возврат диапазона a приводит к результату ссылки, выбранной уже выбранной ячейкой)

 Function TestHL() Debug.Print "OK" Set TestHL = Selection End Function 
  • отправка по электронной почте выделенного диапазона только видимые ячейки от excell в vba
  • Получить все непустые значения из столбца и конвертировать в список рассылки
  • Excel - Заполнитель соответствия с действительным значением в VBA
  • Найти и заменить несколько полей?
  • SSIS Excel импортирует электронную почту по ошибке
  • Создание электронной почты Thunderbird из макроса Excel
  • Ошибка CDO при сохранении пароля в строке
  • Отправить Excel диапазон в тело электронной почты с автозапуском
  • Встраивать графики Excel в тело электронной почты с помощью perl
  • Как отформатировать таблицу html для электронной почты
  • Автоматический текст в Excel
  • Interesting Posts

    Ошибки с динамически генерируемыми страницами в VBA excel

    Понимание и дополнительный код для копирования строки excel на основе значения

    powerquery: импорт и преобразование данных из всех файлов Excel в папку, где две таблицы на одном листе

    Pivot Table Excel: предустановленный фильтр, чтобы не показывать «Все»,

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

    Возвращать повторяющиеся имена (включая частичные совпадения)

    VBA: Получение времени выполнения 1004: метод «Диапазон» объекта «Рабочий стол» не удался при использовании ячеек

    Запустить макрос после запроса OLAP

    Загрузка файла Excel в C # – пустые столбцы и строки автоматически обрезаются

    Поиск файла журнала

    Экспорт данных из Excel в таблицу базы данных с использованием примера ClosedXML

    Apache POI считывает первую строку, но исключает исключение из null-указателя для остальных

    Копирование строк между двумя строками на основе условия поиска

    SUMIFS в excel возвращает 0, когда он не находит значение.

    Добавление каждой третьей строки в макрокоманде столбца VBA

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