はてなブログ 「記事の管理」ページから、1記事分をExcelシートに出力します。
出力結果はこのとおり。 Excelシートの出力範囲をコピーして、そのまま貼りつけています。これまた見苦しく申し訳ありません。
| 1 | <tr class="tr-hover "> |
| 2 | <td class="td-entry-title"> |
| 3 | <div class="entry-table-wrapper"> |
| 4 | <div class="checkbox-table-cell"> |
| 5 | <input name="entry" type="checkbox" value="12345678901234567"> |
| 6 | </div> |
| 7 | <div class="entry-table-cell"> |
| 8 | <div class="entry-table-entry-title"> |
| 9 | <a class="entry-title js-search-entry-title" href="https://blog.hatena.ne.jp/hatenaID.hateblo.jp/edit?entry=12345678901234567">(Excel VBAでのIE制御) はてなブログ 「記事の管理」ページ の記事一覧。getElementsByTagNameメソッドを使って抜き出していきたいが・・・ </a> |
| 10 | </div> |
| 11 | <div class="entry-body "> |
| 12 | <div class="entry-body-summary js-search-entry-body"> |
| 13 | はてなブログ 「記事の管理」ページのソースコードを調べて、どのタグを拾えば良いかがわかりましたので、次は、実際にExcel VBAを使ってコードを書いていきます。 いつものように、要点だけ記載したコードで、このままでは走らないので申し訳ありません。 Dim objTag_tr As Object '<tr> Dim objClas_tr_hover As Object Dim obj1Article As Object '1記事分のhtmlコード Do For Each objTag_tr In objIE.document.getElementsByTagName("tr") For Eac… |
| 14 | </div> |
| 15 | </div> |
| 16 | </div> |
| 17 | </div> |
| 18 | </td> |
| 19 | <td class="td-right td-admin-button"> |
| 20 | <div class="entry-edit-buttons-row"> |
| 21 | <div class="dropdown-window-wrapper js-entries-edit-dropdown"> |
| 22 | <a class="btn dropdown-toggle" href="https://blog.hatena.ne.jp/hatenaID.hateblo.jp/edit?entry=12345678901234567">編集</a> |
| 23 | <div class="entries-edit-dropdown-window dropdown-window"> |
| 24 | <ul class="list"> |
| 25 | <li> |
| 26 | <a href="https://blog.hatena.ne.jp/hatenaID.hateblo.jp/edit?entry=12345678901234567"> |
| 27 | <i class="blogicon-edit"></i> 編集 |
| 28 | </a> |
| 29 | </li> |
| 30 | <li> |
| 31 | <a href="https://blog.hatena.ne.jp/hatenaID.hateblo.jp/revisions?entry=12345678901234567"> |
| 32 | <i class="blogicon-recent"></i> 編集履歴を見る |
| 33 | </a> |
| 34 | </li> |
| 35 | <li> |
| 36 | <a href="https://blog.hatena.ne.jp/hatenaID.hateblo.jp/edit?copy_target_id=12345678901234567"> |
| 37 | <i class="blogicon-entry"></i> コピーして新しい記事を書く |
| 38 | </a> |
| 39 | </li> |
| 40 | <li> |
| 41 | <button class="js-top-placed-activate-button" data-summary="はてなブログ 「記事の管理」ページのソースコードを調べて、どのタグを拾えば良いかがわかりましたので、次は、実際にExcel VBAを使ってコードを書いていきます。 いつものように、要点だけ記載したコードで、このままでは走らないので申し訳ありません。 Dim objTag_tr As Object '<tr> Dim objClas_tr_hover As Object Dim obj1Article As Object '1記事分のhtmlコード Do For Each objTag_tr In objIE.document.getElementsByTagName("tr") For Eac…" data-url="https://www.mypath-as-variant.com/entry/2020/06/12/231547" data-title="(Excel VBAでのIE制御) はてなブログ 「記事の管理」ページ の記事一覧。getElementsByTagNameメソッドを使って抜き出していきたいが・・・ " data-uuid="12345678901234567"> |
| 42 | <i class="blogicon-pinned"></i> トップページの先頭に表示する |
| 43 | </button> |
| 44 | </li> |
| 45 | </ul> |
| 46 | </div> |
| 47 | </div> |
| 48 | </div> |
| 49 | </td> |
| 50 | <td class="td-blog-author">はてなID</td> |
| 51 | <td class="td-blog-category"> |
| 52 | <span class="blog-category-name">Excel VBA</span> |
| 53 | <span class="blog-category-name">ブログ運営</span> |
| 54 | </td> |
| 55 | <td class="td-blog-comment">0</td> |
| 56 | <td class="td-blog-description"> |
| 57 | <time class="time" datetime="2020-06-12T14:15:47.000Z" data-epoch="1591971347000" data-local="">2020年6月12日 23:15:47</time> |
| 58 | </td> |
| 59 | <td> |
| 60 | <a href="https://www.mypath-as-variant.com/entry/2020/06/12/231547" target="_blank"><i title="記事を見る" class="blogicon-external tipsy-southeast"></i></a> |
| 61 | </td> |
| 62 | </tr> |
09行目:編集用ページURLと記事題名
13行目:記事本文先頭(サマリ)
50行目:作成者
52行目:カテゴリ
55行目:コメント数
57行目:投稿日時
60行目:公開用記事URL
今回使用したExcel VBAコードは以下のようになります。
obj1Articleは、オブジェクトで、1記事分のhtmlが格納されています。
obj1Article.outerHTMLでソースコードが見れるのですが、これをそのままExcelシートに出力すると、1セルに全ソースコードが貼りついてしまいます。
そのため、obj1Article.outerHTMLを改行で区切られた配列変数に変換します。
htmlArray = Split(obj1Article.outerHTML, vbLf)
とすることで 配列変数htmlArrayに全文字を取り込んでいます。
あとは、配列変数に格納された文字列を、Excelシートに1セル1行ずつ出力していきます。
For Each で使用する変数を String型で宣言すると、コンパイルエラーが出ます。
For Eachは、コレクション オブジェクトまたは配列でのみ繰り返しを実行します。
というものです。
なので For Each内 で使用する変数はVariant型として宣言しました。

また、出力する文字は Trim(tagText) として空白を除去しています。
これにより文字の入っていない空白行は無視して、文字の入っている行だけを出力しています。
この次の工程では、このExcelシートから実際に必要な文字列を抜きだしていきます。
明日に続きます。