用于将网页内容复制到 Word/Excel 工作表的 Vb 脚本或 VBA 代码

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11780366/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 13:41:12  来源:igfitidea点击:

Vb Script or VBA code to copy the contents of a web webpage to a word/excel sheet

vbavbscriptcopywebpage

提问by user1239951

Possible Duplicate:
Extract values from HTML TD and Tr

可能的重复:
从 HTML TD 和 Tr 中提取值

I need to copy the contents of a web webpage to a word/excel sheet using VBA or VB Script (If it hectic the using any programming language)..

我需要使用 VBA 或 VB 脚本将网页的内容复制到 word/excel 表(如果使用任何编程语言很忙)。

So if i give the path of a web page then the system needs to copy the contents of a web page and write it in a Word or excel file.

因此,如果我给出网页的路径,则系统需要复制网页的内容并将其写入 Word 或 excel 文件。

回答by peter

Please post what you allready have next time, i have 2 solutions, choose what best suits your needs, here the one that use word as requested

下次请发布您已经拥有的内容,我有2个解决方案,选择最适合您的需求,这里是按要求使用单词的那个

Option Explicit
'Just change these two lines
Const HTMLFileIn="http://stackoverflow.com/questions/10782976/disable-error-in-vbs"
Const DocFileOut="c:\newfile.doc"

Dim MyWord,oIE
set MyWord=CreateObject("Word.Document") 
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Navigate HTMLFileIn
Wscript.Sleep 500
oIE.document.body.createTextRange.execCommand("Copy")
Wscript.Sleep 500
MyWord.Content.Paste
MyWord.SaveAs DocFileOut
MyWord.Close
oIE.Quit
Set oIE = Nothing
set MyWord = Nothing 
Wscript.Echo HTMLFileIn & " is now saved as " & DocFileOut

Sub wait
  Wscript.Sleep 500
  While oIE.busy
    Wscript.Sleep 1000
  Wend
  While oIE.Document.readyState <> "complete"
    Wscript.Sleep 1000
  Wend
End Sub

If you just want to view the html, here is the simplest solution

如果你只是想查看html,这里是最简单的解决方案

url = "http://stackoverflow.com/questions/10782976/disable-error-in-vbs"
set xml = createobject("msxml2.serverxmlhttp.6.0")
with xml
  .open "get", url, false
  .send
  wscript.echo .responsetext
end with

回答by peter

See my other answer that uses word. And here another technique and a save as HTML

请参阅我的另一个使用单词的答案。这里是另一种技术和另存为 HTML

function download(sFileURL, sLocation, async)
  set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
  objXMLHTTP.open "GET", sFileURL, async
  on error resume next
  objXMLHTTP.send()
  if err.number = 0 then
    do until objXMLHTTP.Status = 200
      wscript.echo objXMLHTTP.Status
      wcript.sleep(200)
    loop
    if objXMLHTTP.Status = 200 Then
      set objADOStream = CreateObject("ADODB.Stream")
      objADOStream.Open
      objADOStream.Type = 1
      objADOStream.Write objXMLHTTP.ResponseBody
      objADOStream.Position = 0    
      set objFSO = Createobject("Scripting.FileSystemObject")
      If objFSO.Fileexists(sLocation) Then objFSO.DeleteFile sLocation
      Set objFSO = Nothing
      objADOStream.SaveToFile sLocation
      objADOStream.Close
      set objADOStream = Nothing
      download = true
    end if
  else
    download = false
  end if
  set objXMLHTTP = Nothing
end function

if download("http://stackoverflow.com/questions/10782976/disable-error-in-vbs", "question.html", false) then
  wscript.echo "download ok"
else
  wscript.echo "download nok"
end if