※本ソフトの公開・サポートは終了しました。
ホーム > スクリプト作成入門 > 選択範囲を含む要素を操作する例

選択範囲を含む要素を操作する例

(目次)

1.概要

ここでは、Webページ内の選択範囲を含むHTML要素を操作するスクリプトを紹介します。このスクリプトでは選択範囲からTABLE要素を取得して操作します。

スクリプトを実行すると、選択範囲を含むテーブルをGetTableTextメソッドを利用してテキスト形式でクリップボードに保存します。

ブラウザ部で表(TABLE)を選択してコピーしてから、Microsoft Excel などに貼り付けると、背景色や画像など余分な装飾もコピーされてしまいます。かといって、テキスト形式で貼り付けると、別のセルに分かれて欲しい内容が同一セルにまとめて貼り付けられたりします。

単純にテキストのみをコピーしたいときにはGetTableTextメソッドを使用すると便利です。

2.サンプルスクリプトの概要

今回紹介するサンプルスクリプトの動作内容は下記の通りです。

  1. アクティブなドキュメントの選択範囲を取得する
  2. 取得した選択範囲を含むTABLE要素を内側から順に検索する。(parentElementプロパティを利用)
  3. TABLE要素が見つかったら、GetTableTextメソッド を実行する

GetTableTextの第2引数を true にすると、セル内のBRタグを認識するようになります。詳細はGetTableTextメソッドのヘルプを参照して下さい。

3.ソースリスト全文(VBScript)

下が VBScript で実装したスクリプト全文になります。

スクリプトパネルの[実行されるスクリプト]欄にコピーして実行するか、お気に入りフォルダなどにスクリプトファイル(*.sbv)として保存して実行してください。

' アクティブなウィンドウの選択範囲を含むテーブル全体のテキストを
' クリップボードにコピーするスクリプト

' 選択範囲を取得
set objSel = ActiveDocument.selection

' 選択範囲を含むTABLE要素を外側に向かって検索する
set objRng = objSel.createRange
set objElm = objRng.parentElement
do while ((objElm is Nothing) = false)
  if (objElm.tagName = "TABLE") then
    exit do
  end if
  set objElm = objElm.parentElement
loop

if (objElm is Nothing) then 
  ShowMessage "TABLE が見つかりません。"
else
  objRng.moveToElementText objElm
  objRng.select

  ClipboardText = GetTableText(objElm, false)
end if

4.ソースリスト全文(JavaScript)

下が JavaScript で実装したスクリプト全文になります。

スクリプトパネルの[実行されるスクリプト]欄にコピーして実行するか、お気に入りフォルダなどにスクリプトファイル(*.sbj)として保存して実行してください。

// アクティブなウィンドウの選択範囲を含むテーブル全体のテキストを
// クリップボードにコピーするスクリプト

// 選択範囲を取得
var objSel = ActiveDocument.selection;

// 選択範囲を含むTABLE要素を外側に向かって検索する
var objRng = objSel.createRange();
var objElm = objRng.parentElement();
if (objElm.tagName == "TABLE") {
  objElm = objElm.parentElement;
}

while ((objElm != null) && (objElm.tagName != "TABLE")) {
  objElm = objElm.parentElement;
}

if (objElm == null) {
  ShowMessage("TABLE が見つかりません。");
} else {
  objRng.moveToElementText(objElm);
  objRng.select();

  ClipboardText = GetTableText(objElm, false);
}

以上です。

2007/12/11

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