2

Web ページに移動し、単一の HTML 要素を見つけて、その内容を表示する VBA 関数に取り組んでいます。これが私がこれまでに持っているものです。

Function WebTableToSheet(webpage As String, tag As String, count As Integer) As String


  'Tested using IE7,  Excel 2000 SP1, and Windows XP
  Dim objIE As Object
  Dim varTables, varTable, document
  Dim allTags, tags
  Dim varRows, varRow
  Dim varCells, varCell
  Dim lngRow As Long, lngColumn As Long
  Dim strBuffer As String

  Set objIE = CreateObject("InternetExplorer.Application")

 'Setup
  With objIE
    .AddressBar = False
    .StatusBar = False
    .MenuBar = False
    .Toolbar = 0
    .Visible = True
    .Navigate webpage
  End With

  'Load webpage
  While objIE.Busy
  Wend
  While objIE.document.ReadyState <> "complete"
  Wend


  varTable = objIE.document.All

  allTags = objIE.document.All.tags(tag)

  WebTableToSheet = allTags.Item(count)

  Debug.Print "Testing function"




Cleanup:
    Set varCell = Nothing: Set varCells = Nothing
    Set varRow = Nothing: Set varRows = Nothing
    Set varTable = Nothing: Set varTables = Nothing
    objIE.Quit
    Set objIE = Nothing
End Function

InternetExplorer を開くと、関数で指定された Web ページにアクセスできますが、特定のタグを検索しようとすると失敗するようです。Microsoft VBA Internet Explorer のドキュメントを検索するのに苦労しましたが、このタスクに使用できる変数とメソッドを知っていましたか?

4

3 に答える 3

2

shdocvw.dll と Microsoft HTML Object Library への参照を設定することをお勧めします。XP では、shdocvw.dll は system32 フォルダにあり、HTML オブジェクト ライブラリは参照リストにあるはずです。現時点では XP にしかアクセスできないため、使用している他のバージョンの Windows を検索する必要があります。次に、コードで次のことができます。

Dim IE as SHDocVw.InternetExplorer
Dim doc as HTMLDocument
Dim el as IHTMLElement
Set IE = new SHDocVw.InternetExplorer

With IE
  .navigate "some.webpage.com"
  .visible = true
End With

Do
  'Nothing
Loop Until IE.readyState = READYSTATE_COMPLETE ' = 4

Set doc = IE.Document
Set el = doc.getElementById("someElementId")
If Not el Is Nothing Then
  MsgBox el.innerText
End If
于 2012-07-05T00:51:01.173 に答える