※本ソフトの公開・サポートは終了しました。
ホーム > スクリプト作成入門 > テーブル内(表内)のテキストを取得する方法

テーブル内(表内)のテキストを取得する方法

(目次)

1.概要

ここでは、テーブル内(表内)のテキストをスクリプトで取得する方法を解説します。

動作確認用のサンプルスクリプトも紹介しています。スクリプトパネルから実行してください。

2.テーブル全体のテキストを取得する方法

テーブルを操作するには、まず操作するテーブルのtable要素を取得する必要があります。

ScriptBrowserKオブジェクトのTableOfCellTextメソッドを使用すると簡単に目的のtable要素を取得することができます。

例としてYahoo!ファイナンス - 外国為替情報の為替レート表のテーブル要素を取得する手順を以下に解説します。

  1. Yahoo!ファイナンス - 外国為替情報(http://quote.yahoo.co.jp/m3)を表示します。
  2. 目的のテーブル(今回の例では「レート表」)内で、テーブルを特定するのに使用する特徴的な語句を探します。Webページ内で他に使用されていない語句がベストです。今回は、「外国為替」という語句を使用します。
  3. テーブル要素を取得するスクリプトは以下のようになります。
    Set tbl = TableOfCellText(ActiveDocWin.document.Body, "外国為替")

テーブル要素を取得できれば、テーブル内のテキストを取得するのは簡単です。ScriptBrowserKオブジェクトのGetTableTextを使用するだけです。

サンプルスクリプトを下に紹介します。 Yahoo!ファイナンス - 外国為替情報のページを自動的に表示して、外国為替のレート表をクリップボードにコピーするスクリプトです。

Set Window1 = NavigateNew("http://quote.yahoo.co.jp/m3")
Window1.SetFocus
Set tbl = TableOfCellText(Window1.document.Body, "外国為替")
ClipboardText = GetTableText(tbl, TRUE)

最後の行では、GetTableTextで取得したテーブル内のテキストをScriptBrowserKオブジェクトのClipboardTextプロパティに代入して、クリップボードにコピーしています。

GetTableTextメソッドで取得したテキストは、セル毎にタブ文字で区切られています。
このスクリプト実行後にMicrosoft Excelで貼り付けを実行すると、取得したテキストがセル毎に分割されて貼り付けられます。

 

3.特定のセルのテキストを取得する方法

前項では、テーブル全体のテキストを取得する方法を紹介しました。ここでは、テーブル内の特定のセルのテキストを取得する方法を紹介します。

それには、ScriptBrowserKオブジェクトのTableOfCellText2メソッドを使用します。TableOfCellText2は、引数で指定した語句を含むテーブル内の行番号と列番号も取得できます。 取得した行番号と列番号を利用すればテーブル要素内の目的のセルのテキストを簡単に取得できます。

例としてYahoo!ファイナンスのマーケット速報のトヨタ自動車のWebページで総資産利益率を画面に表示するスクリプトを以下に紹介します。

Set Window1 = NavigateNew("http://quote.yahoo.co.jp/q?s=7203.t&d=t")
Window1.SetFocus
Set tbl = TableOfCellText2(Window1.document.Body, "総資産利益率", iCol, iRow)
MsgBox tbl.Rows(iRow).Cells(iCol).innerText

最後の行の「tbl.Rows(iRow).Cells(iCol).innerText」の部分で、目的のセル内のテキストを取得しています。応用として 「iRow」の部分を「iRow-1」に置き換えれば、1つ上のセルのテキストを取得できます。検索した語句(今回の例では「総資産利益率」)の隣のセルのテキストを取得したい場合などに使用して下さい。

4.取得したいテーブルとは別のテーブルが取得されてしまう場合には

TableOfCellText, TableOfCellText2に渡す語句がWebページ内で複数使用されている場合などに、取得したいテーブルとは別のテーブルが取得されてしまう場合があります。そのようなときには、下の2つの方法を試してみてください。

  1. 指定する語句を変更してみる。
    他のテーブルでは使用されていない語句を探して使用してください。
  2. 一度外側のテーブルを取得するか、別の語句でテーブルを取得してから、TableOfCellTextの第一引数(Window1.document.Bodyの部分)を取得したテーブルに置き換えてみる。
    例えば「3.」項の例で「総資産利益率」でなく「株価収益率」を取得しようとすると、目的とは別のテーブルが取得できてしまいます。そんな場合は、以下のように2段階に分けて取得すると上手く動作します。
    Set tbl = TableOfCellText(Window1.document.Body, "総資産利益率")
    Set tbl = TableOfCellText2(tbl, "株価収益率", iCol, iRow)
    「総資産利益率」でテーブルを取得してから、そのテーブル内の「株価収益率」を探す訳です。

以上です。

2007/05/24

Copyright (c) 2011 Akiyoshi Kozuka (http://www.scriptbrowserk.com/)