Страницы: 1
RSS
Пустая строка в таблице при использовании функции RangeToHtml
 
При массовой рассылке писем КА использую функцию RangeToHtml by Ron de Bruin.
Проблема в том, что при копировании таблицы в тело письма код добавляет пустую строчку без видимых границ в конец таблицы.
При прорисовке сетки выглядит это примерно так: Скрин

При просмотре HTML кода нашел следующие строчки:
Код
<![if supportMisalignedColumns]>
 <tr height=0 style='display:none'>
  <td width=76 style='width:57pt'></td>
  <td width=216 style='width:162pt'></td>
  <td width=113 style='width:85pt'></td>
  <td width=120 style='width:90pt'></td>
  <td width=56 style='width:42pt'></td>
 </tr>
 <![endif]>
Пытался удалить через Replace, эффекта нет.
Код
RangetoHTML = Replace(RangetoHTML, "<![if supportMisalignedColumns]>*<![endif]>", _
                          "")

Возможно ли каким-либо образом удалить лишнюю строчку?

Стандартный код функции RangeToHtml :
Скрытый текст
 
neqkeet, может, функции передается диапазон с лишней строкой, т.е. проблема в определении последней занятой строки диапазона?
Приложите файл с данными и кодом вызова функции RangeToHtml.
 
Казанский,

Вот так определяется диапазон, который используется функцией.
Код
Set rng = ActiveSheet.UsedRange.SpecialCells(12)
 
Проблема как раз в этих строчках
Код
<![if supportMisalignedColumns]> 
  <tr height=0 style='display:none'>
  <td width=76 style='width:57pt'></td>
  <td width=216 style='width:162pt'></td>
  <td width=113 style='width:85pt'></td>
  <td width=120 style='width:90pt'></td>
  <td width=56 style='width:42pt'></td>
 </tr>
 <![endif]>
Однако удалить через Replace их не получается. Пытаюсь удалить строчки <![if supportMisalignedColumns]> и <![endif]> и все что между ними следующим кодом.
Код
RangetoHTML = Replace(RangetoHTML, "<![if supportMisalignedColumns]>*<![endif]>", _
                          "")
Не получается.

Так же интересно как будет выглдяеть код для замены строк:
 
Код
<tr height=0 style='display:none'>  
<td width=76 style='width:57pt'></td>
Например, на
 
Код
<tr height=0 style='display:none'>   
<td width=20 style='width:30pt'></td>
Т.е. не совсем понятно как заменять текст между двух кусков и как быть в случае, если текст, который необходимо заменить содержит несколько строк.
 
neqkeet, функция Replace не работает с подстановочными знаками. Можно с помощью Instr найти фрагмент "<![if supportMisalignedColumns]>", после него фрагмент "<![endif]>" и скомбинировать части строки.
Или использовать регулярные выражения.
А вообще, если таблица не содержит сложного форматирования, для преобразования в HTML можно использовать функции на VBA, которые генерируют код без этих всяких метаданных, например
http://dailydoseofexcel.com/archives/2015/02/13/converting-an-excel-range-to-html-the-hard-way/
 
Казанский, не подскажите как будет выглядеть код для замены такого куска?
 
Актуально  :oops:  
Страницы: 1
Наверх