ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

EXCEL VBAコミュのエクセルのマクロで検索結果を取り込みたい

  • mixiチェック
  • このエントリーをはてなブックマークに追加
エクセルのマクロを使用して
グーグル検索の所定のキーワードを取り込むようにしたのですが

処理としまして、プログラムを起動すると
ユーザーフォームが起動して、テキストボックスがあり
テキストボックス内に検索したいキーワードを入力して
ボタンをクリックしたら
メモ帳に自動でキーワードを書き込まれるようにしたいです。


出来れば、検索結果の一番下のほうに
「他のキーワード」と言うのがありまして
ダイエットで検索すると
「他のキーワード」が

ダイエット日記
ダイエット方法
食べ合わせダイエット
骨盤ダイエット
ダイエット レシピ
ダイエット 運動
どうぶつダイエット
ダイエット ブログ
バナナ ダイエット
炭水化物ダイエット

といったキーワードが出てくるのを
メモ帳に自動で書き出すのと
「他のキーワード」で検索すると
そこにも「他のキーワード」がありますので
それもメモ帳に書き出すようにしたいです。


1層目の「他のキーワード」を書き出すとこまでは
出来たのですが、2層目の「他のキーワード」を書き出す方法がわかりません。


それと、マクロを書いているエクセルファイルを開いたら
自動でマクロを起動できるように出来ますでしょうか?

わかりにくい説明かもしれませんが
よろしくお願いいたします。


作成したコードは以下になります。

Private Sub CommandButton1_Click()
Dim MyKeyWord As String
Dim objIE As Object
Dim i As Integer
Dim MyDir As String
Dim MyTxt As String
Dim j As Integer
Dim HisKeyWord As String
MyKeyWord = TextBox1.Text

'Internet Explorer の起動
Set objIE = CreateObject("InternetExplorer.Application")
With objIE

'キーワードの入力
.navigate "ht" & "tp://w" & "ww.google.com/"
While .Busy Or .ReadyState <> 4: DoEvents: Wend
.Document.forms.Item(0)(1).Value = MyKeyWord
.Document.forms.Item(0)(2).Click
While .Busy Or .ReadyState <> 4: DoEvents: Wend
For i = 0 To .Document.all.Length - 1
If .Document.all.Item(i).className = "e" Then Exit For
Next


'メモ帳の保存先フォルダとファイル名の指定
MyDir = Environ("USERPROFILE") & "\デスクトップ\"
MyTxt = "Google 他のキーワード.txt"

'メモ帳に自動で書き出す
Open MyDir & MyTxt For Append As #1
Print #1, "【キーワード】" & MyKeyWord
If i = .Document.all.Length Then
Print #1, "「他のキーワード」はございません。"
Else
For j = 1 To 10
HisKeyWord = .Document.all.Item(i + j * 2 + 5).outerText
If HisKeyWord = "12345678910次へ" Then Exit For
Print #1, HisKeyWord
Next
End If
Print #1, Chr(10)
Close #1

'Internet Explorer の終了と テキストボックス の初期化
.Quit
End With
Set objIE = Nothing
TextBox1.Text = ""
TextBox1.SetFocus
End Sub

Private Sub TextBox2_Change()

End Sub

Private Sub Label1_Click()

End Sub


よろしくお願いいたします。

コメント(7)

ファイルを開けた時に自動実行させるには、
Private Sub Commandbutton1_Click()内のコードを標準モジュール内に記述してリネームし、ThisWorkbookモジュール内から呼び出せばできます。


・標準モジュール内
Sub Sample()'任意の名前
'Private Sub Commandbutton1_Click()内のコードをカット&ペースト
End Sub

・form内
Private Sub Commandbutton1_Click()
Call Sample
End Sub

・ThisWorkbookモジュール内
Private Sub ThisWorkbook_Open()
Call Sample
End Sub
>マクロを書いているエクセルファイルを開いたら
>自動でマクロを起動できるように
これは、標準モジュールにプロシージャ名を"Auto_Open"にした
Subプロシージャにコードを記述すればできる気がしますが
違っていたらすみません
ウェブページの規則性はそのデザインを決める方の意図次第なので、Googleが今後も今のままを続けるかどうかは定かでないのでプログラムにしてしまうのに向かないテーマな気がします。
少なくとも、パラメータの一部をシートに置いて可変にしておくのがデザイン変更に追随する上でベターかと。
話しは飛びますがメモ帳に書くは頂けません。
メモ帳はアプリケーションの名前であなたの環境でテキストファイルに関連付けされているだけと思われます。
ですからテキストファイルに書くが妥当な表現です。
ゎたるさん マリ男さん よこまやさん
回答ありがとうございます。

>マクロを書いているエクセルファイルを開いたら
>自動でマクロを起動できるように
の部分はご回答いただいた方法で
実行できるように出来ました。

横槍になってしまい申し訳ありませんが、このvbaでgoogle検索を繰り返すと、多分googleからアクセスブロックかかりますよ。
先日、私のせいで会社中のpcがgoogleに普通にアクセス出来ない状況が半日以上続きました。
多分gooleapi等を使わないといけないかと思いますが、そこはわかりません。
仕事に戻るためコメント返信できません、すいません。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

EXCEL VBA 更新情報

EXCEL VBAのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。