Код VBA для редактирования HTML-файла без потери … информация

#html #vba #head

#HTML #vba #заголовок

Вопрос:

Я пытаюсь создать макрос Excel для редактирования HTML-файла, который у меня есть на моем диске. Я использую что-то вроде этого:

 Sub changeImg()

    Dim dom As HTMLDocument
    Dim img As Object
    Dim src As String

    Set dom = CreateObject("htmlFile")

    Open "C:temptest.html" For Input As #1
        src = Input$(LOF(1), 1)
    Close #1

    dom.body.innerHTML = src

    Set img = dom.getelementsbytagname("img")(0)

    img.src = "..."

    Open "C:temptest.html" For Output As #1
        Print #1, dom.DocumentElement.outerHTML
    Close #1


End Sub
 

Проблема в том, что я теряю всю информацию внутри < head> < head > из моего начального файла. Я не могу понять, как сохранить весь html-код и заменить только то, что я хочу, используя getElementById . Приветствуется любая помощь или ориентация. Спасибо.

Ответ №1:

Попробуйте что-то вроде этого:

 Dim doc
Set doc = CreateObject("htmlfile")

doc.Open "text/html"
'next line could use content read from a file...
doc.write "<html><head><title>The title</title></head><body>The body</body></html>"
doc.Close

Debug.Print doc.Title
Debug.Print doc.body.innerText

doc.Title = "New Title here"
doc.body.innerHTML = "New body here"

Debug.Print doc.Title
Debug.Print doc.body.innerText

Debug.Print doc.DocumentElement.outerHTML 'or write to file...
     
 

Ответ №2:

Это сработало для меня.

 Dim doc
Set doc = CreateObject("htmlfile")
Dim src As String

doc.Open 'next line could use content read from a file...

Open "C:new.html" For Input As #1 'this is my line to read from a file.
src = Input$(LOF(1), 1)
Close #1


doc.write src
doc.Close

Debug.Print doc.Title
Debug.Print doc.body.innerText

doc.Title = "New Title here"
doc.body.innerHTML = "New body here"


Debug.Print doc.Title
Debug.Print doc.body.innerText

Debug.Print doc.DocumentElement.outerHTML 'or write to file...


Open "C:new.html" For Output As #1 'this is my line to write to a file
Print #1, doc.DocumentElement.outerHTML
Close #1