ExcelVBAを使用してオンラインWebページからデータを読み取る方法

今すぐ共有:

この演習では、Webサイトからデータを読み取る方法、この場合はYahoo.comからの最新の為替レートを示します。

リーダーには開発者リボンが表示されており、VBAエディターに精通していることを前提としています。 そうでない場合は、Googleの「Excel開発者タブ」または「Excelコードウィンドウ」をご覧ください。

前提条件には、コンボボックスへの入力と名前の定義に関する知識が含まれます。.

ワークブックはXNUMX枚のシートで構成されています。

ユーザーインターフェイス:ユーザーインターフェイス

購入と販売のコンボボックスは、以下のローカルデータシートを参照します。

D11のテーブルは、ユーザーのフォーマットを保持したまま、Webサイト自体から自動貼り付けされます。通貨の売買

この演習のxlsmはダウンロードできます こちら.

自分でアプリケーションを構築する。

XNUMXつのコンボボックスでシートを作成します。 コンボボックスは、XNUMX番目のシートのセルを参照します。

コンボボックスは、を使用してWebサイトを読み取るためのコードも呼び出します。 前日比 イベント。

通貨名は、以下のリストのXNUMX番目のシート(「通貨」)に貼り付けることができます。並べ替え順序は個人的な好みの問題です。

ZAR
USD
EUR
GBP
CHF
AUD
NZD
JPY
CAD
SEK
DKK
NOK
MUR
HKD
SGD
ILS
AED
INR
CNY

データを列BとEに貼り付けます。

図のように、名前を定義し、インデックス関数を使用します。通貨の売買

名前はローカルデータシート「Currencies」で定義されているため、シート「Main」は定義された名前を参照するだけで値を取得できます。つまり、「Main」セルE10とG10の場合はそれぞれ= SELLと= BUYです。

Webを読むためにExcelをプログラミングします。 ただし、データリボンには独自の組み込みプロセスがあり、そのインスタンスをさまざまなシナリオを構築する際にマクロとして記録することができます。 コンピューターまたはブラウザーの構成は、Webページのスクリプトに悪影響を与える可能性があることに注意してください。

コード

モジュールを挿入し、次のように入力します。

Option Explicit

Sub Ticker()
  Dim currBuy As String
  Dim currSell As String

  Range("D11:F14").ClearContents      'prepare the ground for the web data
  currBuy = Range("BUY")          'get variable values from Defined Names previously set up
  currSell = Range("SELL")
  With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://finance.yahoo.com/q?s=" & currBuy & currSell & "=X", Destination:=Range("$D$11"))
    .Name = "q?s=" & currSell & currBuy & "=X"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingNone
    .WebTables = """table1"""
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
  End With
End sub

Sub DropDown2_Change()    'This event will call the routine above. Object name might differ.
    Call Ticker
End Sub

Sub DropDown1_Change()
    Call Ticker
End Sub

ブックをタイプxlsmとして保存します.

コンボボックスの値を変更してコードをテストしてから、貼り付けたテーブルの形式をスマートにします(小数点以下XNUMX桁、グリッド線、シェーディング?)。

Excelファイルの破損

Excelは、保存時にファイルを破損することが知られており、その後、独自の自己回復ルーチンを試行しますが、私の経験では、これは単に機能しないことがよくあります。 破棄されるのはソースファイル(おそらく唯一のコピー)であるため、これはユーザーにとって悲惨な結果になる可能性があります。 破損したExcelファイル ただし、サードパーティのツールを使用して修復できるため、時間と労力を大幅に節約できます。

著者紹介:

フェリックスフッカーは、のデータ復旧の専門家です DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 修理 rar アーカイブ およびSQL回復ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

今すぐ共有:

コメントは締め切りました。