VBA(エクセルマクロ)で自動化ツールやBotを作る1 エクセルのマクロを起動する

エクセルのマクロで、自動化ツールを作ることが得意で、ちょうどツールの手直しをしていたついでに備忘録として記します。

 

まず、なぜわざわざエクセルのマクロで自動化ツールを作るか。

PHPでサーバーにアップし、スクレイピングしたデータをブログに投稿する、等は割とメジャーな方法ですが、

例えばTwitterならばAPIをサーバー経由で叩きすぎるとアカウントが凍結されたり、

実際にブラウザでアクセスをしなければカウントされないブログランキング等、

それらをうまく動かすのにはどうしたらよいかを考えた際、

パソコンからごりおしでアクセスしてしまえばなんとかなった、という結果に至りました。

つまり、サーバー経由でできない事をごりおしたい時に使えます。

 

なお、「こうしたい」に対しての必要な知識だけを仕入れている関係で、

この方が簡単、この宣言の仕方は無い、的なご意見もあるかと思います。

ぜひご意見募集しております。

 

 

今回、ゴールは自動化ツールを作ることとして、いくつかの章に分けて解説を書いていきます。

応用することで、例えばACRランキング無双であったり、ブログランキング上位化であったり、ツイッター自動化であったりをより簡単に実装することができます。

 

目次予定です。

  1. エクセルマクロを作るする
    1. エクセルマクロを作るには
    2. これで何ができるか
  2. エクセルマクロでIEを操作する
    1. IEを開いてみる
    2.  エクセルマクロで特定のリンクをクリックする
    3. エクセルマクロを自動的に起動する
  3. エクセルマクロを自動化する(タスク登録)
  4. エクセルマクロで安全にアカウントを切り替える
    1. どういう意味か
    2. キャッシュのクリアが難しい
    3. 裏技

 

 

エクセルマクロを作るには

エクセルマクロを作るには、

まずは「表示」→「マクロの記録」を押してみましょう。

 

excel1

 

その後、記録を押し、適当にエクセルのセル内に文字を入力したり、コピー&ペーストをしたりしてみましょう。

そして再度、「表示」→「記録の終了」を押してください。

 

これで、今の動きが記録されました。

 

改めて「マクロの表示」をクリックしてみましょう。

記録の際に名前を変えていなければ、「Macro1」という項目が表示されます。

選択して「ステップイン」を押してみましょう。

 


Sub Macro1()
'
' Macro1 Macro
'
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "1"
Range("A1").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

 

上記は、A1に1と入力し、A1をコピーし、B1へペーストする、という作業の記録です。

 

この動作を実行するには、「マクロの表示」から、該当するマクロを選択して実行を押す等してできます。

 

例えば入力する値を、どこかのブログからスクレイピングしてきた値にしたりすると、電話番号と店のリスト等が簡単に出来上がります。

(実際には、○○.select→ActiveCell=○○ではなく、

Sheets(“○○○”).Cells(1.1).Value=▲▲▲

のような形で値を代入することが多いです。

 

これで何が出来るか。

例えばSEO対策用のランダムブログの文言作成や自動ツイッターBot用の数億通りのつぶやきを用意する事などができるでしょう。

 

 

例えば以下のデータをSheet1にコピーしてください。

誰が 何を 何した
ハンバーグ 食べた
貴方 ご飯 作った
太郎君 野菜 温めた
花子さん ステーキ くれた
山田君 生卵
佐藤さん 納豆

 

そして、マクロを表示し、以下のように入力してください。

Sub MacroTest()
Dim 誰 As String
Dim 何 As String
Dim どうした As String
誰 = Cells(Int(Rnd * (Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row - 1)) + 2, 1).Value
何 = Cells(Int(Rnd * (Sheets("Sheet1").Cells(Rows.Count, 2).End(xlUp).Row - 1)) + 2, 2).Value
どうした = Cells(Int(Rnd * (Sheets("Sheet1").Cells(Rows.Count, 3).End(xlUp).Row - 1)) + 2, 3).Value
MsgBox (誰 & "が" & 何 & "を" & どうした)
End Sub

その後、一度保存して同様にマクロの実行を選択するか、メニューバーにある再生ボタンのようなものを押してみてください。

 

excel2

 

メッセージにランダムで入力された値が挿入されます。

(便宜上「誰」等日本語を使っていますが、その部分以外は半角ですので変数も英単語等にした方が個人的には良いと思います)

 

これだけでは、一つだけのデータですが、

少し改造すると

Sub MacroTest()
Dim 誰 As String
Dim 何 As String
Dim どうした As String
r = 1
Do While (r < 100)
誰 = Sheets("Sheet1").Cells(Int(Rnd * (Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row - 1)) + 2, 1).Value
何 = Sheets("Sheet1").Cells(Int(Rnd * (Sheets("Sheet1").Cells(Rows.Count, 2).End(xlUp).Row - 1)) + 2, 2).Value
どうした = Sheets("Sheet1").Cells(Int(Rnd * (Sheets("Sheet1").Cells(Rows.Count, 3).End(xlUp).Row - 1)) + 2, 3).Value
Sheets("Sheet2").Cells(r, 1).Value = (誰 & "が" & 何 & "を" & どうした)
r = r + 1
Loop
End Sub

 

これを実行すると、100個のランダムな文章が手に入ります。

Do While でrが100以下の限り繰り返させています。

cells(r,1)のrが1ずつ上昇していますので、A1からA2、A3と新しい値が入力されていきます。

excel3

 

 

これがもし、ランダムで入力するデータを増やしたらどうでしょうか。

誰に10個、何に10個、どうしたに10個いれただけで、1000通りの文章ができます。
一つ項目を増やして「どんな」を10個作ったとしたら、10000通りです。
「どんな人」である「誰」が「どんな」「何」を「どのように」「どうした」としてみたら。
そして、
「何」を「どのように」「どうした」のは「どんな人」である「誰」だ。
としてみたり、
単純に
「どのように」「どうした」。だけと一部だけを使ったり、
色々なパターンをつけることで、
簡単に何億何兆通りのデータを作ることができます。

他人のブログをスクレイピングして、一人称だけ入れ替えたり、語尾だけ変えたり、○段落目だけ抜き出してみたり、
色々な使い方がその人によって思いつくでしょう。

この作った文章を、例えばツイッターで適当なBotアカウントで呟かせたり、
HTML化したりする事なども可能です。

コピペと判断されないSEO対策として割と素敵な効果を示します(この場合はPHP+Cronの方がいいですが)。

(ブログとしてだと弱いですが、一気に上げると割と良いアクセス数を返してくれます)

 

こんなものがほしい、と言ったリクエストがありましたら是非問い合わせフォームからご連絡ください。

 

次回はエクセルマクロでIEを操作する方法を紹介します。

 

 
Share on Facebook

見積もり・問い合わせフォーム
ガチ株式会社へのお仕事ご依頼・お見積もりの問い合わせはこちらから送信ください。
ホームページ作成
PHP制作依頼
wordpressカスタマイズ依頼
システム開発見積もり依頼
飲食店販促サービス問い合わせ
求人
会ってみたい!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です