2015-01-09 2 views
1

Я пытаюсь очистить веб-сайт для определенного элемента HTML и преобразовать его в Word, сохраняя при этом форматирование неповрежденным. Я могу успешно импортировать его в Excel сначала (а затем в Word), но предел символов для одной ячейки не позволяет мне захватить все нужные мне данные. Вот мой текущий код, начиная с того момента, когда я захватить HTML с сайта:Как вставить HTML в Word с помощью VBA?

Set html = ie.document 

Dim objWord As Object 
    Dim objDoc As Object 
    Set objWord = CreateObject("Word.Application") 
    Set objDoc = objWord.Documents.Add 
    objWord.Visible = True 

Sheets("Sheet1").Range("A1").Value = html.getElementById("main_container").innerText 
Sheets("Sheet1").Range("A1").Select 
Selection.Copy 

objDoc.Range.Paste 

Было бы замечательно, если бы я мог пропустить шаг Excel и просто вставьте HTML прямо в Word. Другой вариант, который, как я думал, - вставить каждый подпункт main_container HMTL в отдельную ячейку, чтобы избежать максимального предела символа. Если кто-то может помочь с этим или другие идеи о том, как я могу это решить, это было бы очень признательно!

Кросс-пост здесь: http://www.mrexcel.com/forum/excel-questions/827926-hmtl-word-visual-basic-applications.html#post4039337

+0

Вы видели [это] (http://stackoverflow.com/questions/11780366/vb-script-or-vba-code-to-copy-the-contents-of-a-web-webpage-to- а-слово-первенствует-ши)? – rusk

+0

Использование переменной вместо: * StringVariable = html.getElementById ("main_container") InnerText objDoc.Range.Text = StringVariable * Cheers, Maciej –

ответ

1

Используйте строку переменной, а!

Dim sInnerText As String, i As Integer, j As Integer 

sInnerText = html.getElementById("main_container").innerText 

'insert text into word document 
objDoc.Range.Text = sInnerText 

'or devide it by length of characters to be able to add parts into cells 
i = 1 
j = 1 
Do While j<Len(sInnerText) 
    ThisWorkbook.Worksheets("Sheet1").Range("A" & i) = Mid(sInnerText, j, j+255) 
    j = j + 256 
    i = i + 1 
Loop 
+0

Спасибо за ваш ответ.. Проблема с использованием строки состоит в том, что она содержит меньше символов, чем ячейка excel, поэтому я все еще сталкиваюсь с лимитом данных. – JohnnyNitro

+0

2 биллиона символов Юникода недостаточно? –

+0

Я читаю, что строки могут содержать миллиарды символов, так что, вероятно, это не проблема. Независимо от того, когда я выполняю код выше, он заполняет только две страницы слова doc, когда он должен составлять около 50 страниц. – JohnnyNitro

1

Возможно, вы ищете что-то вроде этого. Я использую это 2 prodedures установить подменю и верхний индекс HTML теги и отменить, используя подстановочные знаки

Sub SuperSub() 
'Sub y Super Indices a formato HTML 
     With ActiveDocument.Content.Find 
       .Text = "" 'Subíndice 
       .Font.Subscript = 1 
       .Replacement.Text = "<sub>^&</sub>" 
       .Replacement.Font.Subscript = 0 
       .Execute Replace:=wdReplaceAll 
     End With 
     With ActiveDocument.Content.Find 
       .Text = "" 'Superíndice 
       .Font.Superscript = 1 
       .Replacement.Text = "<sup>^&</sup>" 
       .Replacement.Font.Superscript = 0 
       .Execute Replace:=wdReplaceAll 
     End With 
End Sub 
Sub InverSuperSub() 
'Sub y Super Indices de html a WORD 
     With ActiveDocument.Content.Find 
       .Text = "\<sub\>(*)\<\/sub\>" 'Subíndice 
       .MatchWildcards = True 
       .Font.Subscript = 0 
       .Replacement.Text = "\1" 
       .Replacement.Font.Subscript = 1 
       .Execute Replace:=wdReplaceAll 
     End With 
     With ActiveDocument.Content.Find 
       .Text = "\<sup\>(*)\<\/sup\>" 'Superíndice 
       .MatchWildcards = True 
       .Font.Superscript = 0 
       .Replacement.Text = "\1" 
       .Replacement.Font.Superscript = 1 
       .Execute Replace:=wdReplaceAll 
     End With 
End Sub 

Я надеюсь, что это поможет.

Смежные вопросы