【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】

エクセルの複数のセルに入っているテキストで
それぞれのGoogle検索を一気に行う、ということは可能でしょうか?

A1 「モバイル パソコン」
A2 「パソコン GPS」
A3 「NTT GPS」
と各セルに入力されていたとして、
「モバイル パソコン」「パソコン GPS」「NTT GPS」
とそれぞれのGoogle検索を一度に行い、
別々のウィンドウで検索結果を開き、検索結果を比較したいのです。
検索語が少なければ、手動で行っても時間はかからないのですが、
多数の検索語のパターンで検索するため、一度にできる
方法はないかなあ、と悩んでいます。
テキストの入力されているソフトはエクセルでなくても良いのです。
困っています!
よろしくお願いいたします。

A 回答 (3件)

こんにちは。

一例です。

IE 限定でなく、OS の規定ブラウザで開くためあえて API を使いました。
なお、コードを VBE にコピペすると Google Url の部分が若干文字化け
します。適当に直して下さい。

Option Explicit

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long
Public Const SW_SHOWNORMAL = 1


Sub Googleで選択範囲を一括検索()

  Const BASEURL As String = "http://www.google.co.jp/search?hl=ja&ie=UTF-8&q="
  ' // 無制限にウインドウを開くのはリソース不足が発生する可能性があるため、
  ' // ウインドウ数を制限する仕組みは必要かもしれない。とりあえず、簡易的
  ' // に選択セル数で制限しておく。
  Const MAX_CNT As Long = 5
  
  Dim url As String
  Dim tmp As String
  Dim r  As Range
  
  If Not TypeOf Selection Is Range Then Exit Sub
  If Selection.Cells.Count > MAX_CNT Then
    MsgBox "選択セル数が多すぎます(制限:" _
        & CStr(MAX_CNT) & "以下)", vbCritical
  End If
  For Each r In Selection.Cells
    If Len(r.Text) Then
      url = BASEURL & UrlEncode(Replace$(r.Text, " ", " "))
      Call ShellExecute(0&, "OPEN", url, vbNullString, vbNullString, SW_SHOWNORMAL)
    End If
  Next r

End Sub

' // URL エンコード
Public Function UrlEncode(ByVal sText As String) As String
  If Len(sText) = 0 Then Exit Function
  With CreateObject("ScriptControl")
    .Language = "JScript"
    UrlEncode = .CodeObject.encodeURI(sText)
  End With
End Function
    • good
    • 1
この回答へのお礼

凄いすごいすごいすごい、すごいです!!!
出来ました!涙が出そうです!感動しました!!!!
こんなことができるKenKen_SPさんは凄い!
完全に途方にくれていたのですが、あっという間に
解決してしまいました!
どうやったらこんなことが出来るようになるのでしょうか?
私も勉強したら出来ますかね?
何から勉強したらいいんでしょう?
とにかく、本当にどうも有難うございました。
嬉しいです!!!!

お礼日時:2008/02/29 14:59

制限・・としながら、マクロを終了させるコードが抜けてましたね。


失礼しました。下記の部分を追加して下さい。

◆誤

>   If Selection.Cells.Count > MAX_CNT Then
>     MsgBox "選択セル数が多すぎます(制限:" _
>         & CStr(MAX_CNT) & "以下)", vbCritical
>   End If

◆正 Exit Sub を追加

  If Selection.Cells.Count > MAX_CNT Then
    MsgBox "選択セル数が多すぎます(制限:" _
        & CStr(MAX_CNT) & "以下)", vbCritical
    Exit Sub
  End If

あと、

> Const MAX_CNT As Long = 5

この部分を大きくすると選択できるセル数が増えますが、あまり
大きくすると OS がフリーズするかもしれないので、最大でも
10 程度までで留めて下さい。
    • good
    • 0
この回答へのお礼

ご丁寧に追加情報ありがとうございました。
教えていただいたのをじっくり見て、
勉強を始めたいと思います。
どうもありがとうございました。

お礼日時:2008/03/03 12:48

UWSCでできそうだが、やったことはない。



http://www.uwsc.info/
    • good
    • 1
この回答へのお礼

教えていただきありがとうございました。
このソフト、いろんな場面で使えそうですね!
こんなのがあるなんて知りませんでした!

お礼日時:2008/03/03 12:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報