ie-excel

エクセル・マクロでie操作

Excel VBAでIEを操作 結合されたテーブルをエクセルのシートにコピー

2016/10/17

Excelで目的のページにたどり着く方法。
そして、そこにあるテーブルをエクセルにコピーする方法を例示してきました。

今回は該当ページのテーブルデータがマージされていた場合のエクセルへの貼り付け方法を例示したいと思います。

そこで今回のお題は
・セルが不規則に結合されているサイトを表示
・該当サイトのテーブルをエクセルにセル結合させて貼り付ける
を実践。

上記お題は、以下の操作をすることにより可能となります。
・エクセルを起動
・(バージョンによっては)マクロを有効にする
・マクロの編集画面で、以下のコードをコピー&ペースト
・マクロを実行

コピペするコード

「Sheet1」にサンプルサイト同様にセルが結合されてコピペされていませんか?

ではソースの解説です。

処理対象のセルが該当されているかどうかは「MergeCells」で調査できます。
該当セルがマージされていれば、次の列を調査して、セルが結合されていない場所まで列カウンターをアップさせます。
これは、セルの結合が事前に行われていれば、テーブルタグの特性からすでに処理対象外だからです。

続いてのコードです。

行の結合はrowspanに結合数が設定されています。
結合されていない場合、値は「1」が設定されています。
(そのため、1を減算しています)
列結合はcolspanに結合数が設定されています。
結合されていない場合、上記同様に値は「1」が設定されています。

そのため、「Merge」する範囲は、上記値を用いて特定することなります。

その上で、タグ内部の値はinnertextに収録されていますので、その値を結合したセルに設定します。

今回のポイントの整理です。
・テーブルの行結合の値は「rowspan」に収録
・テーブルの列結合の値は「colspan」に収録
といった2点がポイントです。

-ExcelでIE操作