はてなブログ 「記事の管理」ページから、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シートから実際に必要な文字列を抜きだしていきます。
明日に続きます。