Sub ExportHTML()
' макрос для экспорта выделенного диапазона ячеек в HTML
On Error Resume Next
Selection.Areas(1).Select ' на случай выделения несвязанных диапазонов
iFirstLine = Selection.Row
iFirstCol = Selection.Column
iLastLine = iFirstLine + Selection.Rows.Count - 1
iLastCol = iFirstCol + Selection.Columns.Count - 1
'HTML классы для таблицы и четного ряда данных
sTableClass = "tb1"
aLignClass = "center"
vaLignClass = "middle"
sOutput = "<div><table class='" & sTableClass & "' border='1'><tbody align='" & aLignClass & "' valign='" & vaLignClass & "'>"
'width=500px align=center>" ' Начинаем таблицу
sOutput = sOutput & "<caption>" & Cells(iFirstLine, iFirstCol).Text & "</caption>"
For k = iFirstLine To iLastLine ' Обрабатываем Excel таблицу
If (k \ 2 <> k / 2) Then 'проверяем на четность
sLine = "<tr align='" & aLignClass & "'>" ' '"<tr class ='" & sOddRowClass & "'>"
Else
sLine = "<tr>"
End If
iCountColspan = 0 'счетчик объединенных ячеек
For j = iFirstCol To iLastCol
'Проверяем, не объединена ли эта ячейка с соседними.
If Cells(k, j).MergeCells = True Then
'Получаем число объединенных ячеек
iCountColspan = Cells(k, j).MergeArea.Count
Else
iCountColspan = 0
End If
Set oCurrentCell = ActiveSheet.Cells(k, j)
sLine = sLine & "<td"
'Проверяем, нужно ли вставлять код объединения ячейки с соседними
If iCountColspan > 1 Then
sLine = sLine & " colspan=" & iCountColspan
j = j + iCountColspan - 1 'пропускаем ячейки
iCountColspan = 0
End If
'Если по центру
'If oCurrentCell.HorizontalAlignment = -4108 Then sLine = sLine & " style='text-align: center;'"
sLine = sLine & ">"
'Если пусто, прописываем
If oCurrentCell.Text <> "" Then sValue = oCurrentCell.Text Else sValue = " "
'Если жирный
'If oCurrentCell.Font.Bold = True Then sValue = "<b>" & sValue & "</b>"
'Если курсив
'If oCurrentCell.Font.Italic = True Then sValue = "<i>" & sValue & "</i>"
sLine = sLine & sValue & "</td>"
If k = iFirstLine Then sLine = Replace(sLine, "<td", "<th")
Next j
sOutput = sOutput & sLine & "</tr>"
Next k
sOutput = sOutput & "</table></div>" 'Заканчиваем таблицу
' Копируем полученный HTML в буфер обмена
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText sOutput: .PutInClipboard
End With
' Копируем полученный HTML в файл
Filename = "G:\test.html" 'задаём здесь полный путь к файлу
Set fso = CreateObject("scripting.filesystemobject")
Set ts = fso.CreateTextFile(Filename, True, True)
ts.Write txt: ts.Close
Set ts = Nothing: Set fso = Nothing
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub