ホーム > FAQ > カテゴリ:[基本操作]
表(テーブル)内のテキストだけを Excel にコピーするには
(目次)
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)