Это частичный ответ. Если это будет выглядеть многообещающе, я закончу, хотя, вероятно, не раньше выходных.
Я вывел диапазон, используя 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>
Это звучит интересно?