Экспорт таблицы из Excel в HTML - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. На просторах интернета нашёл файл-помощник для переноса прайса из таблицы Excel в HTML:
Листинг программы
  1. Sub ExportHTML()
  2. ' макрос для экспорта выделенного диапазона ячеек в HTML
  3. On Error Resume Next
  4. Selection.Areas(1).Select ' на случай выделения несвязанных диапазонов
  5. iFirstLine = Selection.Row
  6. iFirstCol = Selection.Column
  7. iLastLine = iFirstLine + Selection.Rows.Count - 1
  8. iLastCol = iFirstCol + Selection.Columns.Count - 1
  9. 'HTML классы для таблицы и четного ряда данных
  10. sTableClass = "tb1"
  11. aLignClass = "center"
  12. vaLignClass = "middle"
  13. sOutput = "<div><table class='" & sTableClass & "' border='1'><tbody align='" & aLignClass & "' valign='" & vaLignClass & "'>"
  14. 'width=500px align=center>" ' Начинаем таблицу
  15. sOutput = sOutput & "<caption>" & Cells(iFirstLine, iFirstCol).Text & "</caption>"
  16. For k = iFirstLine To iLastLine ' Обрабатываем Excel таблицу
  17. If (k \ 2 <> k / 2) Then 'проверяем на четность
  18. sLine = "<tr align='" & aLignClass & "'>" ' '"<tr class ='" & sOddRowClass & "'>"
  19. Else
  20. sLine = "<tr>"
  21. End If
  22. iCountColspan = 0 'счетчик объединенных ячеек
  23. For j = iFirstCol To iLastCol
  24. 'Проверяем, не объединена ли эта ячейка с соседними.
  25. If Cells(k, j).MergeCells = True Then
  26. 'Получаем число объединенных ячеек
  27. iCountColspan = Cells(k, j).MergeArea.Count
  28. Else
  29. iCountColspan = 0
  30. End If
  31. Set oCurrentCell = ActiveSheet.Cells(k, j)
  32. sLine = sLine & "<td"
  33. 'Проверяем, нужно ли вставлять код объединения ячейки с соседними
  34. If iCountColspan > 1 Then
  35. sLine = sLine & " colspan=" & iCountColspan
  36. j = j + iCountColspan - 1 'пропускаем ячейки
  37. iCountColspan = 0
  38. End If
  39. 'Если по центру
  40. 'If oCurrentCell.HorizontalAlignment = -4108 Then sLine = sLine & " style='text-align: center;'"
  41. sLine = sLine & ">"
  42. 'Если пусто, прописываем &nbsp;
  43. If oCurrentCell.Text <> "" Then sValue = oCurrentCell.Text Else sValue = "&nbsp;"
  44. 'Если жирный
  45. 'If oCurrentCell.Font.Bold = True Then sValue = "<b>" & sValue & "</b>"
  46. 'Если курсив
  47. 'If oCurrentCell.Font.Italic = True Then sValue = "<i>" & sValue & "</i>"
  48. sLine = sLine & sValue & "</td>"
  49. If k = iFirstLine Then sLine = Replace(sLine, "<td", "<th")
  50. Next j
  51. sOutput = sOutput & sLine & "</tr>"
  52. Next k
  53. sOutput = sOutput & "</table></div>" 'Заканчиваем таблицу
  54. ' Копируем полученный HTML в буфер обмена
  55. With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
  56. .SetText sOutput: .PutInClipboard
  57. End With
  58. ' Копируем полученный HTML в файл
  59. Filename = "G:\test.html" 'задаём здесь полный путь к файлу
  60. Set fso = CreateObject("scripting.filesystemobject")
  61. Set ts = fso.CreateTextFile(Filename, True, True)
  62. ts.Write txt: ts.Close
  63. Set ts = Nothing: Set fso = Nothing
  64. End Sub
  65. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  66. End Sub
Прошу знатоков помочь подредактировать код. Необходим перенос из файла Excel данных таблицы, но с присвоением определённых классов html-тегов для определенных столбцов в файле Excel. Например для столбца "A" - <td class='td1'>, для столбца "B" - <td class='td2'> и т.д. Файл с примером прилагаю.

Решение задачи: «Экспорт таблицы из Excel в HTML»

textual
Листинг программы
  1. select case j
  2.    case 1
  3.          sLine = sLine & " class='td1'"
  4.    case 2
  5.          sLine = sLine & " class='td2'"
  6. end select

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут