Сохранять комментарии к ячейкам при отправке электронной почты в таблицу Excel (используя RangeToHTML) - PullRequest
1 голос
/ 15 мая 2019

Я использую скорректированную версию хорошо известного 'rangetoHTML' Рона де Брейна для отправки по электронной почте диапазона Excel с помощью Outlook (как показано здесь: https://www.rondebruin.nl/win/s1/outlook/bmail2.htm).. Хотя это работает нормально, некоторые ячейки имеют комментарии, которые логически делаютне переносится в outlook.

Я подумал, что возможно добавить комментарии в виде всплывающих подсказок с небольшим количеством CSS (как показано здесь: https://www.w3schools.com/howto/howto_css_tooltip.asp),, но я не уверен, что a) Outlookподдерживает всплывающую подсказку в письме в формате HTML (я видел конфликтующие сообщения), и б) если он ДАЕТ, как реализовать его в html, выдаваемом publishobjects

Соответствующий бит, чтобы выплевывать HTM, но я в замешательствео том, как идти, включая подсказки.

   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

Любая помощь приветствуется, спасибо.

1 Ответ

1 голос
/ 16 мая 2019

Это частичный ответ. Если это будет выглядеть многообещающе, я закончу, хотя, вероятно, не раньше выходных.

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

Рон де Брюин предоставил отличную процедуру, которая подготавливает практически любой диапазон для PublishObjects, вызывает PublishObjects, получает созданный файл и возвращает его в виде строки, готовой стать телом Html электронного письма.

Насколько я могу судить, нет способа заставить PublishObjects добавлять комментарии к выводу так, как вам нужно. Вам нужно будет добавить необходимый код.

При подходе 1 вам нужен новый код в функции RangeToHtml между «получить файл, который он создает» и «вернуть его как строку». То есть вы позволяете PublishObjects делать свое дело, а затем исправляете его вывод перед возвратом этого вывода вызывающей стороне.

Большая часть кода в функции RangeToHtml допускает несмежный диапазон, который, я полагаю, PublishObjects не обрабатывает. Если у вас есть простой диапазон, было бы легче создать новый RangeToHtml, который будет обрабатывать простые диапазоны плюс ваше требование. Это будет подход 2.

Подойдет к 1 или к 2 лучше, чтобы удовлетворить ваши требования.

Html-файл, созданный PublishObjects, содержит одну таблицу. В таблице нет ничего, что указывало бы на то, из какой ячейки таблицы происходит ячейка диапазона Excel. Если в строке 2, столбце 5 диапазона есть комментарий, вам придется отсчитывать s, а затем s, чтобы найти соответствующую ячейку таблицы. Эта ячейка таблицы должна быть изменена. Если существующее значение ячейки - Xxxx, а комментарий - Yyyy, вам нужно заменить Xxxx на:

<div class="tooltip">Xxxx<span class=tooltiptext>Yyyy</span></div>

Это звучит интересно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...