(目次)

1.概要

表(TABLEタグ)内のデータを Excel にコピーしたいことが良くあります。

ところがブラウザでコピーして Excel に貼り付けると、書式が設定されたり、セルが結合されたり、余分なリンクが設定されたりで使いにくい場合があります。

ここで紹介するスクリプトを使用すると、テキストデータだけをタブ区切り形式でクリップボードにコピーするので、Excel にそのまま貼り付けることができて便利です。

結合したセルを含むテーブルでも上手く動作するようになっています。

2.スクリプトのインストール

下がスクリプトファイルです。

TableCopy.zip (1KB)

zip ファイル中の "選択範囲を含むテーブルをコピー.sbj" を適当な場所に登録して下さい。

スクリプトファイルの登録方法は、スクリプトに関する基礎知識の「2.スクリプトを登録できる場所」を参照して下さい。お勧めは「6.ブラウザ部のショートカットメニュー」です。ショートカットメニューに追加したら列[標準]のチェックを外し、[選択]の列をチェックして、選択範囲のショートカットメニューだけに表示されるようにすると良いでしょう。

3.使用方法

以下に手順を示します。

(1)コピーしたいテーブルの一部を選択します。

(2)スクリプトを実行します。するとクリップボードにテーブルの内容がコピーされます。

(3)Excel で貼り付けたいセルを選択して、[貼り付け]コマンドを実行します。

以上です。

※このスクリプトは、選択範囲を含む一番内側のテーブルをコピーします、テーブルが入れ子になっていて更に外側のテーブルをコピーしたい場合は選択範囲を広げてスクリプトを実行して下さい。

4.(参考)スクリプトのソースリスト

以下、スクリプトのソースファイルです。ご参考までに。

JavaScript のソースファイル

var objSel = ActiveDocWin.ActiveFrameDocument.selection;
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);
}
        

(参考)VBScript で記述した場合の例

Set objSel = ActiveDocWin.ActiveFrameDocument.selection
Set objRng = objSel.createRange

Set objElm = objRng.parentElement

if (objElm.tagName = "TABLE") then
  Set objElm = objElm.parentElement
end if

while ((objElm is Nothing) = FALSE) and (objElm.tagName <> "TABLE")
  Set objElm = objElm.parentElement
wend

objRng.moveToElementText objElm
objRng.select

ClipboardText = GetTableText(objElm, FALSE)
        

以上です。

(2010/01/22)