0

Excelデータベースを作成しています。会社の Web サイトから会社の全従業員の名前、電子メール、および役職をインポートしたいと考えています。Data->From Web を選択し、ページ全体を選択します。これが唯一の可能性です。

ページには、データを含むテーブルは表示されません。横に名前、メールアドレス、役職が記載された従業員の写真の長いリスト

データを Excel スプレッドシートにインポートします。形式が非常に悪いです。そこで、「名前」の列、「メール」の列、そして同様に「役職」の列を作成するカット アンド ペーストを開始します。他のすべての情報は手動でキャンセルされます。

この新しい形式を維持したままデータを更新したいと思います。残念ながら、「すべて更新」ボタンを使用してインポートしたデータを更新するたびに、元の形式に戻ります。

更新後、Web にインポートされたデータの新しい形式を維持するにはどうすればよいですか?

皆さんのサポートに感謝します!

Kr、A

4

1 に答える 1

2

指定したページから名前とタイトルを抽出し、シート 1 に入れる例をまとめました。

コードは、基になる html のレイアウトが同じままである場合にのみ機能します。既存のリストの更新はサポートされていません (リストを再度読み取る前に、シート 1 のすべてが削除されます)。

このコードを使用するには、新しいコード モジュール (ワークシートまたはワークブック セクションではなく) に配置する必要があり、コード エディターまたはメインの Excel ウィンドウのマクロ メニューから実行できます。

' Note: This code requires the following references to be loaded.
' Microsoft HTML Object Library (mshtml.tlb)
' Microsoft Internet Controls (ieframe.dll)
' To add a reference
' In the VBA Code Editor, in the Tools Menu click the References item
' Scroll through the list and ensure that the references are selected
' Press OK and your done.

Sub Scrape()
Dim Browser As InternetExplorer
Dim Document As HTMLDocument
Dim Element As IHTMLElement
Dim Elements As IHTMLElementCollection
Dim empName As String
Dim empTitle As String

Dim Sheet As Worksheet

    Set Sheet = ThisWorkbook.ActiveSheet

    Sheet.UsedRange.ClearContents ' Nuke the old list

    Set Browser = New InternetExplorer

    Browser.navigate "http://www.hsbc.com/about-hsbc/leadership"

    Do While Browser.Busy And Not Browser.readyState = READYSTATE_COMPLETE
        DoEvents
    Loop

    Set Document = Browser.Document

    Set Elements = Document.getElementsByClassName("profile-col1")

    For Each Element In Elements
        empName = Trim(Element.Children(1).Children(0).innerText)
        empTitle = Trim(Element.Children(1).Children(1).innerText)
        Sheet.Range("A1:B1").Insert xlShiftDown
        Sheet.Cells(1, 1).Value = empName
        Sheet.Cells(1, 2).Value = empTitle
        'Debug.Print "[  name] " & empName
        'Debug.Print "[ title] " & empTitle
    Next Element

    Set Browser = Nothing
    Set Elements = Nothing

End Sub
于 2013-03-03T14:51:33.743 に答える