ブログ自動投稿ツールの作り方
(Excel 2013 版)
「さとうちはる」さんの無料レポート 『超簡単!誰にでも出来る♪ブログ記事自動投稿ツールを作成する方法をご紹介。アフィリエイトにはめんどくさい作業 や退屈な作業がたくさんあります。やりたくない作業はツールを使って自動化しよう。文末にはツールの無料プレゼント あります♪』⇒ http://mailzou.com/get.php?R=82982&M=15301 には、Excel2013での実際の操作手順が掲載されていませんでした。 そこで、Excel 2013で実践してみました。その記録です。 活用していただければ嬉しいです♪ 麻生ゆき (Excel 2003だけで解説された部分のみです。) (前後の共通部分は、無料レポートをご覧下さい。)最初にVBA が使用できるように「マクロ」と呼ばれるエクセル上のアプリ(のようなもの)を準備します。 ・Excel メニューの「ファイル」→「オプション」を選択 ・ 表示される「Excel のオプション」から「リボンのユーザー設定」を選択 ・ 「メインタブ」内の「開発」にチェックを付けて、OK をクリック Excel のメニューに「開発」タブが追加されていれば、 完了です。 ・ 表示される「Excel のオプション」から 「リボンのユーザー設定」を選択
⇒
・ 「メインタブ」内の「開発」に☑マークを入れる。 ・右下の「OK」 をクリック
通常、エクセルの初期設定では、セキュリティ機能によってプログラムは実行できないようになっています。 マクロが実行できるように設定を変更します。
「開発」タブの「マクロのセキュリティ」 をクリック
「マクロの設定」をクリック
「警告を表示して全ての マクロを無効にする」を☑
それでは、いよいよエクセルVBA の機能を体験してもらいます。
1. Excel のシートを開きます。
2. 「開発」タブをクリック。
画面が開いたら
「挿入」タグから
ここにプログラムのコードを 貼り付けます。
以下のサンプルコードをコピーして 試してみてください。
入力したら「ツール」→「マクロ」を選択 (サンプルコード1)(コピペできます。) ~~~~~ Sub メッセージボックスを表示する() Msgbox “アフィリエイトで稼ぐ。” End Sub ~~~~~
マクロ名を選び、 「実行」を選択
「アフィリエイトで稼ぐ。」と 表示されました♪ 今回のプログラムはたった1行 だけなので、単にメッセージボ ックスが表示されただけでした が、 プログラムはいくらでも行数を増やせるので、アイデア次第でいろいろなことが出来るようになります。
次は、もう少し動きのあるプログラムを試していただきます。 (サンプルコード2)
⇒
最初に文字を入力して、ボタンの選択によって処理が分かれるように作ってあります。 少しプログラムコードについて、上から順に説明していきます。 「Sub」サブルーチンの略で、ある共通の処理を1つにまとめたものを呼びます。「Sub」~「End Sub」までが、 ひとつのマクロになります。「Sub」~「End Sub」でくくられたそれぞれの指令文には、どの作業をどう いう手順で行なうかということが記されています。「Dim Res As Integer」
Dim は、言語にもよりますが多くは dimension (ディメンション)の略語で、変数の宣言等で使われます。 integer は整数の意味となります。よってこの場合は、Dim Res As Integer とは「Res を整数として扱う」 ということになります。
「Res = MsgBox("お金を稼ぐことは好きですか?", vbYesNoCancel)」
MsgBox は、その名の通りメッセージボックスで、入力した値に対して、次の処理の内容を表示して、処理 の続行を「はい」「いいえ」で促したり、処理の結果を表示したりします。よってこの場合は、"お金を稼ぐ ことは好きですか?"というメッセージと文字入力フォーム、さらに「はい」「いいえ」「キャンセル」のボ タンを表示して、入力された文字をRes の値として扱います。
次の「If Res <> vbCancel Then」から、11 行目までの「End If」までは、まとめて処理されます。
If~Then~Else~End If は、If 文に設定されている条件式を判定して、その結果が真(True)の場合はThen 以降の処理を実行して、偽(False)の場合はElse 以降の処理を実行するようになっています。
てみてください。
~~~~~ (コピペできます。)
Sub メッセージボックスの利用() Dim Res As Integer
Res = MsgBox("お金を稼ぐことは好きですか?", vbYesNoCancel) '文字を入力 If Res <> vbCancel Then '「キャンセル」がクリックされた時、プログラム終了 If Res = vbYes Then '「はい」がクリックされた時、次の行を実行する。
MsgBox "アフィリエイトなら稼げますよ。", vbYesNo Else '「いいえ」がクリックされた時、次の行を実行する。 MsgBox "ツールがあれば作業がラクになりますよ。", vbYesNo End If MsgBox "ご回答ありがとうございました" End If End Sub ~~~~~
次のサンプルコード3は、エクセルのセルに入力された数値を処理するものです。
※ エクセルのA1列に適当に文字や数字を 前もって、10個ほど入力しておいて ください。
~~~~~ (コピペできます。)
Sub 一行ずつ空白行を挿入() Dim i As Long
Const myCol = 1 '最終行を判断するための列
For i = Cells(Rows.Count, myCol).End(xlUp).Row To 2 Step -1 Rows(i).Insert Next i End Sub ~~~~~ 以上、サンプルコード(1)から(3)まで、動かすことができたでしょうか。 以上のサンプルコードは、すべて、エクセルのシート上のみでの動作でした。 が、実は、インターネットの画面(インタネットエクスプローラー)を操作することもできるのです。 では、実際にやってみましょう。(サンプルコード4)は、郵便番号を入力して、Google マップを表示させる方法です。
(サンプルコード4)
~~~~~ (コピペできます。)
Sub 郵便番号でGoogleマップを表示() Dim 郵便番号 As String
Dim SPDY_URL As String Dim Res As Integer
郵便番号 = Application.InputBox("郵便番号を入力してくださ い。")
SPDY_URL = "http://maps.google.co.jp/maps?f=q&hl=ja&q=" _ & 郵便番号 & "&z=" & "16"
CreateObject("WScript.Shell").Run SPDY_URL 'Google Map を 表示する
End Sub
すると、次に下のような画面が出てきましたので、 「Japan」と入力してみました。 すると・・・
↓
簡単なのに、なかなか面白いですね。 このように、いろいろなプログラムを試していると、その可能性の大きさを感じていただけたのではないかと思います。 レポートで紹介したようなサンプルコードは、ネットで検索していただくと、たくさん出ています。 ぜひ、いろいろと試してみてくださいね。VBA について気になることを調べて、知識が徐々に増えてくると、自分が日々やっているアフィリエイトの 作業をどうにか自動でできる方法は無いかと考えるようになり、前出のGoogleマップのコードを試した際に は、ブログの記事を自動で投稿することも、出来るはずだと考えるようになりました。 先のサンプルコード4では、ボックスに入力した7桁の数字から、グーグルマップのサイトを開くことができ たので、これを少し応用すれば簡単にできると思いました。 エクセルで、ブログのURL やタイトル等を入力したシートを作成して、そのデータを元にVBA でブログサ ービスのサイトを操作するプログラムを作れば、ブログの記事を自動で投稿できるはずだと予想しました。 VBA は、マウスやキーボードで操作することは基本的に何でもできると、最初の頃にどこかのサイトで読ん でいたから、きっとできるはずだと考え、試行錯誤しながらやっとできたのが次のコードです。 レポートを作成しようとした際は、出来る限り簡潔にしようと思っていたのですが、どうしても書いておきた いことが追加で出てきて、長くなってしまいました。 やっとのことで、ブログ記事を投稿するためのコード紹介のところまでやってきました。もう一息です。 がんばりましょう。 これまでを同じように、以下のコードをVBAのコード編集画面に貼り付けてください。
(サンプルコード5)ブログ自動投稿ツール ~~~~~ Const FC2ADDRESS = 3 Const FC2MAILADD = 4 Const FC2PASS = 5 Const FC2TITLE = 6 Const FC2CATEGORYCHOICE = 7 Const FC2ARTICLE = 8 Const FC2CATEGORY = 9 Sub ブログ記事投稿() '[---▼メインプログラム---] '[---▼プログラムで使用する変数を設定---]
Dim IEobj As Object 'オブジェクト変数として定義
Dim row As Integer '整数として定義
Dim sitehtml As String '文字列として定義
Dim index As Integer '整数として定義 '[---▲プログラムで使用する変数を設定---] '[---▼前準備---]
Set IEobj = CreateObject("InternetExplorer.Application") 'IEを操作する準備
row = 6 'エクセルのセルをD6 の位置にする
'[---▲前準備---]
'[---▼記事投稿メインプログラム(Do~Loop の間をくり返し)---]
Do While Cells(row, FC2MAILADD).Text <> ""
URL = "http://id.fc2.com/logout.php" 'まずは一旦ログアウト
IEobj.Navigate URL '改めてログインする
IEobj.Application.Visible = True 'ブログサイトを表示 '[---▼サイトの完全表示を待つ---]
Do While IEobj.Busy = True 'IEを表示する
DoEvents Loop
Do While IEobj.Document.ReadyState <> "complete" '完全に表示されるまで待機
DoEvents Loop
'[---▲サイトの完全表示を待つ---]
'[---▼ブログサイトにログインして投稿処理する---]
URL = "http://id.fc2.com/" 'ブログサイトのURL を指定
IEobj.Navigate URL '指定したURL のサイトを表示
IEobj.Application.Visible = True '確認できるようにIE を表示 '[---▼サイトの完全表示を待つ---]
Do While IEobj.Busy = True 'IEを表示する
DoEvents Loop
Do While IEobj.Document.ReadyState <> "complete" '完全に表示されるまで待機
DoEvents Loop
'[---▲サイトの完全表示を待つ---]
IEobj.Document.all.email.Value = Cells(row, FC2MAILADD).Text 'メールアドレス入力
IEobj.Document.all.pass.Value = Cells(row, FC2PASS).Text 'パスワード入力
IEobj.Document.forms(0).Submit 'ログインボタンをクリック
'[---▼サイトの完全表示を待つ---]
Do While IEobj.Busy = True 'IEを表示する
DoEvents Loop
Do While IEobj.Document.ReadyState <> "complete" '完全に表示されるまで待機
DoEvents Loop
'[---▲サイトの完全表示を待つ---]
IEobj.Navigate "http://blog.fc2.com/" 'ブログサービスのトップ画面を表示 '[---▼サイトの完全表示を待つ---]
Do While IEobj.Busy = True 'IEを表示する
DoEvents Loop
Do While IEobj.Document.ReadyState <> "complete" '完全に表示されるまで待機
DoEvents Loop '[---▲サイトの完全表示を待つ---] 'ブログの管理画面を表示 IEobj.Navigate "https://secure.id.fc2.com/?done=blog&switch_language=ja" '[---▼サイトの完全表示を待つ---]
Do While IEobj.Busy = True 'IEを表示する
DoEvents Loop
Do While IEobj.Document.ReadyState <> "complete" '完全に表示されるまで待機
DoEvents Loop '[---▲サイトの完全表示を待つ---] '新しい記事を投稿する画面を表示 IEobj.Navigate "http://admin.blog.fc2.com/control.php?mode=editor&process=new" '[---▼サイトの完全表示を待つ---]
Do While IEobj.Busy = True 'IEを表示する
DoEvents Loop
Do While IEobj.Document.ReadyState <> "complete" '完全に表示されるまで待機
DoEvents Loop
'[---▲サイトの完全表示を待つ---] '[---▼各フォームにデータを入力する---]
'エクセルシートのタイトル欄と記事欄が空欄になってないか確認
If Cells(row, FC2TITLE).Value <> "" And Cells(row, FC2ARTICLE).Value <> "" Then
'[---▼各フォームにエクセルのデータを入力する---] '記事タイトルの入力
IEobj.Document.forms.Item(0).elements.Item(0).Value = Cells(row, FC2TITLE).Value
'カテゴリーの入力
IEobj.Document.forms.Item(0).elements.Item(1).Value = Cells(row, FC2CATEGORY).Value
'記事本文の入力
IEobj.Document.forms.Item(0).elements.Item("entry[body]").Value = Cells(row, FC2ARTICLE).Value
'<記事を保存する>ボタンをクリック
IEobj.Document.Script.setTimeout "postEntry();return false;", 200
'[---▼各フォームにエクセルのデータを入力する---] '[---▼エクセルの入力済みのデータを削除---] Cells(row, FC2TITLE).Value = "" 'エクセルのタイトル欄を空白にする Cells(row, FC2CATEGORYCHOICE).Value = "" 'エクセルのカテゴリー欄を空白にする Cells(row, FC2ARTICLE).Value = "" 'エクセルの記事本文欄を空白にする '[---▲エクセルの入力済みのデータを削除---] '[---▼IEページ遷移時の警告を回避する---]
Application.Wait Now() + TimeValue("00:00:05") 'ここでしばらく待機(警告ウィンドウ対策)
SendKeys "%{S}", True '警告ウィンドウの「ページに留まる(S)」をクリック '[---▲IEページ遷移時の警告を回避する---]
'[---▼サイトの完全表示を待つ---]
Do While IEobj.Busy = True 'IEを表示する
DoEvents Loop
Do While IEobj.Document.ReadyState <> "complete" '完全に表示されるまで待機
Loop '[---▲サイトの完全表示を待つ---] End If '[---▲各フォームにデータを入力する---] '[---▲ブログサイトにログインして投稿処理する---] row = row + 1 'エクセルの次の行に移動する Loop '最初の行に戻る(エクセルの入力されている最後の行までくり返し) '[---▲記事投稿メインプログラム(Do~Loop の間をくり返し)---] '[---▼後処理(ログアウト)---] URL = "http://id.fc2.com/logout.php" 'ログアウトする IEobj.Navigate URL '[---▼サイトの完全表示を待つ---]
Do While IEobj.Busy = True 'IEを表示する
DoEvents Loop
Do While IEobj.Document.ReadyState <> "complete" '完全に表示されるまで待機
DoEvents Loop
'[---▲サイトの完全表示を待つ---]
Set IEobj = Nothing '終了する '[---▲後処理(ログアウト)---] '[---▲メインプログラム---] End Sub ~~~~~ 上記のコードを貼り付けた後は、エクセルのシートを準備します。 事前にFC2ブログ(ブログ名、サイトURL、ログインパスワード、メールアドレス)を開設して、記事が
投稿できるように準備しておいてください。 ========== ここから先は「さとうちはる」さんの無料レポート 「『超簡単!誰にでも出来る♪ブログ記事自動投稿ツールを作成する方法をご紹介。 アフィリエイトにはめんどくさい作業や退屈な作業がたくさんあります。 やりたくない作業はツールを使って自動化しよう。 文末にはツールの無料プレゼントあります♪』」 http://mailzou.com/get.php?R=82982&M=15301 の11ページへ戻ってくださいね。 11ページの下の方には エクセルのサンプルファイルを用意してくださっていますから、ダウンロードして利用なさると便利でしょう。
以上、実際にExcel2013でも実践してみましたが、自動投稿されていました♪
ぜひ、作業を効率化して、アフィリエイトの収入を上げていきましょう。
麻生ゆき