Экспорт таблицы из Excel в HTML - VBA
Формулировка задачи:
Здравствуйте.
На просторах интернета нашёл файл-помощник для переноса прайса из таблицы Excel в HTML:
Прошу знатоков помочь подредактировать код.
Необходим перенос из файла Excel данных таблицы, но с присвоением определённых классов html-тегов для определенных столбцов в файле Excel.
Например для столбца "A" - <td class='td1'>, для столбца "B" - <td class='td2'> и т.д.
Файл с примером прилагаю.
Листинг программы
- 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
Решение задачи: «Экспорт таблицы из Excel в HTML»
textual
Листинг программы
- select case j
- case 1
- sLine = sLine & " class='td1'"
- case 2
- sLine = sLine & " class='td2'"
- end select
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д