ЧТО У МЕНЯ УЖЕ ЕСТЬ
Я использую следующее для извлечения данных из файла HTML.
В этом примере перечислены все строки таблицы в файле HTML.
Dim IE As InternetExplorer
Dim HTMLdoc As HTMLDocument
Dim TRelements As IHTMLElementCollection
Dim TRelement As HTMLTableCell
Dim r As Long
Set IE = New InternetExplorer
With IE
.Navigate filePath
While .Busy Or .ReadyState <> READYSTATE_COMPLETE: DoEvents: Wend
Set HTMLdoc = .Document
End With
Set TRelements = HTMLdoc.getElementsByTagName("TR")
Это позволяет мне точно определять данные следующим образом (5-я строка, 1-я ячейка), пример:
A = TRelements.Item(5).ChildNodes.Item(1).innerText
ЧТО Я ИЩУ
Я хочу вставить новую ячейку (элемент TD) в начало строки (элемент TR)
ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ
Новый TD-элемент для DOB
В приведенном ниже примере я использую Element.insertAdjacentHTML() и Element.insertAdjacentElement() для вставки новых ячеек.
Sub Example()
Dim IE As InternetExplorer
Dim HTMLdoc As HTMLDocument
Dim TRelements As IHTMLElementCollection
Dim TRelement As HTMLTableCell
Dim r As Long
Set IE = New InternetExplorer
With IE
.navigate filePath
While .Busy Or .readyState <> READYSTATE_COMPLETE: DoEvents: Wend
Set HTMLdoc = .document
End With
Set TRelements = HTMLdoc.getElementsByTagName("TR")
Dim TR As HTMLTableRow
Set TR = TRelements(0)
TR.insertAdjacentHTML "afterbegin", "<TH>DOB</TH>"
Dim TD As HTMLTableCell
Set TD = HTMLdoc.createElement("TD")
Set TR = TRelements(1)
TD.innerText = "09-07-58"
TR.insertAdjacentElement "afterbegin", TD
IE.Visible = True
End Sub
Эта подпрограмма обновит исходный файл.
Sub OverWriteHTMLDocument(Document As HTMLDocument, FilePath As String)
Rem VBA OpenTextFile: https://analystcave.com/vba-filesystemobject-fso-in-excel/vba-opentextfile/
Const ForReading = 1, ForWriting = 2, ForAppending = 8 'Need to define constants manually
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 'Need to define constants manually
Dim Url As String
Url = Replace(Document.Url, "file://", "", , , vbTextCompare)
With CreateObject("Scripting.FileSystemObject").OpenTextFile(Url, ForWriting, True, TristateFalse)
.WriteLine Document.DocumentElement.outerHTML
.Close
End With
End Sub
@ MK01111000 Спасибо, что приняли мой ответ. Я добавил подпрограмму, которая будет обновлять файл.
Это работает, как правильно сохранить изменения в документе?