前回の投稿では、ExciteブログからBloggerに引っ越す方法を書きました。
今回は、エクスポートしたファイルから、Bloggerでは不要と思われる、エキサイト固有の部分を削除する方法を紹介します。 前回の記事の「
3. エクスポートしたファイルから不要なタグなどを削除する。(任意)」の部分の詳細な解説になります。
★ 内容が間違っていたり不具合が起こる可能性もありますので、バックアップを取ってから、自己責任でお試し下さい。
* * *
エクスポートしたファイルの中身は?
エクスポートしたファイルは、一つの投稿に付き、大体以下のような内容になっていると思います。
(実際は、大部分、改行なしで、ずらずらっと繋がっています。)
------------------
AUTHOR: maniera
TITLE: ブログを引っ越しました。
STATUS: Publish
ALLOW COMMENTS: 1
CONVERT BREAKS: 0
ALLOW PINGS: 1
PRIMARY
CATEGORY: news
CATEGORY: news
DATE: 12/05/2010 03:37:00
-----
BODY:
<div class="POST_BODY">
<!-- interest_match_relevant_zone_start -->
ここに本文が入ります...。
<DIV CLASS=TAGS>Tags:
中略...
<!-- interest_match_relevant_zone_end -->
<br clear="all"/><div name="im" id="im" style="display:hidden;"></div>
<script type="text/javascript">
中略...
</script>
<script type="text/javascript">
中略...
</script>
</div>
-----
EXTENDED BODY:
-----
EXCERPT:
-----
KEYWORDS:
-----
COMMENT:
AUTHOR: maniera
DATE: 12/12/2010 06:27:00
SECRET: 0
test コメントテスト<BR>
-----
--------
------------------
複数の投稿がある場合は、投稿の数だけ、このパターンの繰り返しになります。
上記の内容の内、
赤色部分がエキサイトの広告関連と「タグ」等で、インポートしても機能しないようですが、残っていると気持ちが悪いので、私は削除しました。
※ 面倒ならば、消さなくても、多分問題ないのではないかと思われますが...。
投稿本文に付随する余計な部分は、Bloggerにインポート後に、投稿の編集の「HTMLの編集」で消せるので、投稿数が少ない場合は手動で消す方が簡単です。
但し、
SECRET:0という部分だけはコメントに付いて来ます。具体的にどうなるかというと、コメント文の前に「SECRET:0」という文字列が入ってしまいます。インポートしたコメントは、削除は出来ますが、修正は出来ないようです。気になる場合は、インポート前に削除します。
※ 見栄えが気にならないなら、そのまま残しても問題ありません。
☆ 上記の点、全て気にならない方は以下の作業は不要です。お疲れ様でした。^^
自動で削除するには?
大量の投稿がある場合、手動で削除するのは困難です。
当初、エディタの文字列の置換等で行おうとしましたが、不規則に変化する部分があって、置換しきれない所が出てきます。そこで、Microsoft Excel2007のVBAを使って、余分な文字列を消すマクロ「ExciteCutter」を作ってみましたので、参考にして下さい。
残念ながら、「ExciteCutter」はExcel 2000では動作しません。理由の一つはFindメソッドが、1セル辺り、1025文字以上の文字列の場合、検索を1024文字で止めてしまうからです。(当初、Excel2000で作成していて、これが分からずハマリました)
※ 同様の理由で、1投稿辺りの本文が、あまりにも長いと不具合が出るかもしれません..。
マクロ 「ExciteCutter」
Excelのマクロ、VBAを理解されている方が、中身を見て危険性がないか判断してからお試し下さい。
私もVBAを完全には理解していないので、思わぬ結果になっても保障できません。
特に本文中に引用の形などで、htmlの特定のタグ(下記マクロの赤い文字の部分)が含まれている場合は、どうなるか分かりませんので、注意してください。元データは必ずバックアップを作成してから試してください。
マクロの本体は以下の通りです。
緑はコメント文、赤は検索文字列です。
---------------------------
Sub exciteCutter()
'
' exciteCutter Macro
' 2010/11/19 ユーザー名 :maniera
Dim a As Range
Dim b As Range
Dim i As long
Dim j As long
' *** Loop_01 本文前の広告のコメントと、エキサイトのタグを削除 ***
Do
' 広告コメントの入ったセルを見つけて、変数aにRangeオブジェクトを格納
Set a = Range("A:A").Find("<!-- interest_match_relevant_zone_start -->")
If a Is Nothing Then Exit Do
' 変数bにaの1行下のセルをセット
Set b = a.Offset(1, 0)
' ターゲット文字列(広告コメント)の出現位置を測定して変数iにセット
i = InStr(1, a, "<!-- interest_match_relevant_zone_start -->")
' ターゲット文字列(広告コメント)から後ろの文字列を削除
a = Left(a, i - 1)
' ターゲット文字列<DIV CLASS=TAGS>の出現位置を変数iにセット
i = InStr(1, b, "<DIV CLASS=TAGS>")
If i = 0 Then Exit Do
' ターゲット文字列<DIV CLASS=TAGS>から後ろを削除
b = Left(b, i - 1)
Loop
'*** Loop 02 本文後の広告のコメントとスクリプトを削除 ***
Do
Set a = Range("A:A").Find("<!-- interest_match_relevant_zone_end -->")
Set b = Range("A:A").Find("</script>")
If a Is Nothing Then Exit Do
i = a.Row
j = b.Row
Rows(i & ":" & j).Select
Selection.Delete Shift:=xlUp
Set a = Range("A:A").Find("<script type=")
Set b = Range("A:A").Find("</script>")
i = a.Row
j = b.Row
Rows(i & ":" & j).Select
Selection.Delete Shift:=xlUp
Loop
'*** Loop 03 コメントのSECRET: 0を削除する ***
do
Set a = Range("A:A").Find("SECRET: 0")
If a Is Nothing Then Exit Do
i = a.Row
Rows(i).Select
Selection.Delete Shift:=xlUp
loop
MsgBox ("comlete!")
End Sub
---------------------------
マクロ「ExciteCutter」の使用方法
自分でも忘れてしまうので、メモしておきます。^^
- excel2007を起動。
- もし、[開発]タブが表示されていない時は、officeメニューでEXCELのオプションを選び、基本設定で「[開発]タブをリボンに表示する」にチェックを入れる。
- 開発タブの VisualBasicを押す。
- MicrosoftVisualBasicという別窓が出たら、左の窓(プロジェクト-VBAProject)の中の「VBAProject(Book1)」の上で右クリック、挿入>標準モジュールを選択。
 |
”MicrosoftVisualBasic”
左上の窓が「プロジェクト-VBAProject」です。
右の窓に「exciteCutter」のコードを貼り付けます。 |
- 新しいモジュール「Module1」が出てくるので、右の真っ白な窓に、「exciteCutter」のコードを貼り付ける。
- 変換したいtxtファイルをドラッグ&ドロップでexcelのワークシートBook1の部分に放り込む。
- excelの開発タブのマクロを押して、マクロの小窓が出たら、「Book1!exciteCutter」を選んで「実行」を押す。すると、画面がチカチカして不要な部分を削除し始める。
- 「comlete!」の小窓が出たらOKを押して処理は終わり。
- データの入った全てのセルを選択して、Ctrl+Cでコピーします。メモ帳の新規ファイルにペーストしてから、UTF-8形式のtxtファイルとして名前を付けて保存する。
セルを素早く選択する方法:
データの入った一番下のセルを探し出して選択(なぜかctrl+endでは違う所に行くので手動で行う)、ctrl+shift+homeを押してから、ctrl+shift+→(右カーソル)を押して選択する。
注意!データが変になる(文字列中の ダブルクォーテーションが重複して付加されてしまう)ので、Excelで txt形式として保存してはいけません。 必ず、メモ帳にデータを貼り付けて、UTF-8で保存して下さい。
- officeメニューで「閉じる」を選択、「変更を保存しますか?」では「いいえ」を選択してファイルを閉じる。
- また別のファイルを処理する場合は、6.に戻る。変換したいファイルの数だけ、上記6.から10.の作業を、繰り返す。
- excelを終了時に「VBAを保存しますか?」等と聞いてきた時は、「いいえ」を選ぶ。
* * *
繰り返しになりますが、今回の内容は、前回の記事の「
3. エクスポートしたファイルから不要なタグなどを削除する。(任意)」の部分だけの詳細な解説です。もしこの処理を行う場合は、前回の記事をご覧の上、 エクスポート直後に行って下さい。この前後の作業は、前回の記事を参照願います。
間違いがあったらコメントでご指摘下さい。^^;
以上です。