IEを使用してGoogle検索する方法についての問題

このQ&Aのポイント
  • Win7 sp1 64bit、ACCESS 2013、IE11を使用しています。最近、Google検索の結果が、急に文字化けするようになってしまい、対処方法が分からなくなっています。
  • 質問者は、IEを起動し、テキストボックスに入力されている値(全角文字)を使ってGoogle検索を行うフォームを作成していますが、最近文字化けの問題が発生していると述べています。
  • PC再起動やIEの閲覧履歴の削除など、対処方法を試しても改善しないため、文字コードの変換を行う必要があるのか、Googleの仕様が変わったのか疑問を持っています。
回答を見る
  • ベストアンサー

ACCESSを使ってIEを起動しgoogle検索

Win7 sp1 64bit、ACCESS 2013、IE11を使用しています。 IEを起動し、テキストボックスに入力されている値(全角文字)を使って Google検索を行うフォームを作り、使用していました。 最近、Google検索の結果が、急に文字化けするようになってしまい 対処方法が分からなくなっています。 ソースコードは次の通りです。 Dim objIE As Object Dim varRet As Variant Set objIE = CreateObject("InternetExplorer.Application") varRet = "http://www.google.com/search?q=" & [テキストボックス] & "&num=50&hl=ja&filter=0&lr=lang_ja&ie=Shift_JIS" If varRet <> "" Then  objIE.Navigate varRet objIE.Visible = True End If Set objIE = Nothing PC再起動、キャッシュやクッキーなど、IEの閲覧履歴を全て削除しても 改善できませんでした。 何処かGoogleの仕様が変わったのでしょうか。 文字コードの変換?をコードに追加する必要があるのでしょうか。 対処方法について、ご教授願います。

  • jjj22
  • お礼率58% (17/29)

質問者が選んだベストアンサー

  • ベストアンサー
noname#212058
noname#212058
回答No.1

varRet に入れているURL文字列の末尾に &oe=shift_jis を追加してみてください。 それでもだめなら、参考URLの記事をみて他の値も試 してみましょう。

参考URL:
http://www13.plala.or.jp/bigdata/google.html
jjj22
質問者

お礼

回答ありがとうございます。 パラメータをshift_jisにすると化けるようですが パラメータを逆に"なし"→"自動判別"で解決しました。 ありがとうございました。

関連するQ&A

  • VBA IE操作 メルカリの検索窓に入力できません

    お世話になります。 Win7/エクセル2010/IE11 使用です エクセルVBAよりIEでメルカリ(https://www.mercari.com/jp/)の 検索窓にテキスト文字を入力させたいのですが、入力できません。 Sub GoogleSearch() Dim objIE As Object Dim objInpTxt1 As HTMLInputElement Dim objInpTxt2 As HTMLInputElement Dim URL1 As String Dim myKey As Variant myKey = "あ" Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "https://www.mercari.com/jp/" Call IEWait(objIE) Set objInpTxt1 = objIE.document.getElementsByName("keyword")(0) objInpTxt1.Value = myKey    ’テキストが入力されません 'objIE.document.forms(0).submit ’検索ボタンを押すコードが知りたいです objIE.Quit Set objIE = Nothing End Sub 'IEを待機する関数 Function IEWait(ByRef objIE As Object) Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop End Function -------- メルカリの検索窓のInputタグのtypeがtextではなくsearchとなっていますが 何か関係がありますでしょうか? あと、できましたら 上記のコードでは、コメントアウトしている 検索ボタンをクリックするコードも教えてもらえると幸いです <i>タグの意味がよくわかりません。 <i class="icon-search"></i> お手数をおかけしますが よろしくお願いします

  • 起動しているIEをVBSで閉じるときの問題・・・

    VBスクリプトで起動しているIEを探し特定のサイトであればウィンドウを閉じたいのですがどのようにすればよいのでしょうか? Dim ObjIE Dim ObjShell Dim ObjWindow Dim WinExist WinExist = False Set ObjShell = CreateObject("Shell.Application") For Each ObjWindow In ObjShell.Windows If TypeName(ObjWindow.Document) = "HTMLDocument" Then WinExist = True Set ObjIE = ObjWindow End If Next Set ObjShell = Nothing If Not WinExist = True Then Set ObjIE = CreateObject("InternetExplorer.Application") End If If objIE.Document.URL = "http://www.yahoo.co.jp/" Then objIE.quit End If If objIE.Document.URL = "http://www.excite.co.jp/" Then objIE.quit End If If objIE.Document.URL = "http://www.google.co.jp/" Then ?????????? End If ・ ・ ・ 例えばディスプレイ上にYahoo、Excite、Googleのホームページがそれぞれ立ち上がっていたとします。 もしYahooがあれば閉じて次にExciteを探しあれば閉じて、次にGoogleのページがあればそのままにし後の処理を行わず終わらせたいのですが・・・もしGoogleが開いていればこれ以降の処理を全てすっ飛ばして終了にしたいのですが・・・ また、If thenを繰り返してばかりで汚いコードのような気もします。 これをやっていてYahoo、Excite、Google全て開いていた場合何故かエラーが出て終了してしまいます。 どなたかいい方法があれば教えて下さい。

  • VBAからIEの操作

    グーグルをIEで開いてVBA(語句)を検索して見終わったら IEを閉じる作業をしたいのですが、検索窓にVBA(語句)を 入力するところでエラーとなります。初心者ですが、なんとか 勉強したいのでよろしくお願いいたします。 Sub ie_test_Navigate() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.google.co.jp/" IE.document.all.q.Value = "VBA" IE.document.all.btnG.Click If MsgBox("IEを閉じますか?", vbYesNo, "終了確認") = vbYes Then objIE.Quit End If Set objIE = Nothing End Sub

  • Yahoo検索で文字化け

    お世話になります、 Google、Yahoo検索する プログラム(検索文字をテキスト ボックスから入力して) を作成したのですが、Googleは OKなのですがYahooが検索文字が 化けます。PHPのようにエンコーディング する必要があるのでしょうか? ソースは以下の通りです。 Dim ie As Object Set ie = CreateObject("InternetExplorer.Application") ' With ie '検索エンジンを判断する If Option1.Value = True Then 'Google .Navigate "http://www.google.co.jp/search?q=" & Text1.Text Else 'Yahoo .Navigate "http://search.yahoo.co.jp/search?p=" & Text1.Text End If ' .Visible = True ' End With 宜しくお願いいたします。

  • vba ie操作 検索後のタイトルが取得できない

    vba ie操作 ヤフーファイナンス 検索後のタイトルが取得できない win8、エクセル2010です。 ヤフーファイナンスで会社名を検索して、その後のコードを取得したいのですが その場合、タイトルに企業コードがあるので、その文字を取得しようとしたら、 検索前のページが取得されてしまいます。 ------------------------------------------------------------ Dim objIE As New InternetExplorer Sub test() Dim str企業名 As String Dim myObj As Object str企業名 = "ホテルオークラ" Set objIE = CreateObject("InternetExplorer.application") With objIE .navigate "http://finance.yahoo.co.jp/" .Top = 0 .Left = 0 .Width = 1000 .Visible = True End With Call IE_wait For Each myObj In objIE.document.all.tags("input") If myObj.ID = "searchText" Then myObj.Value = str企業名 Exit For End If Next For Each myObj In objIE.document.all.tags("input") If myObj.ID = "searchButton" Then myObj.Click Call IE_wait Exit For End If Next Debug.Print objIE.document.Title Set objIE = Nothing End Sub ----------------------- Sub IE_wait() Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.readyState = READYSTATE_COMPLETE Loop Do While objIE.Busy = True DoEvents Loop End Sub ------------------------------------------------------------ というコードなのですが 検索語の2ページ目は 「(株)京都ホテル【9723】:株式-株価 - Yahoo!ファイナンス」 というタイトルなのに 1ページ目と同じ 「Yahoo!ファイナンス - 株価やニュース、企業情報などを配信する投資・マネーの総合サイト」 が返ります。 なぜ次のページのタイトルが取得できないのでしょうか? 画面上IEブラウザには2ページ目が表示されています。

  • VBAで起動しているIEの操作

    IEでOKWAVEを開いていたら イミディエイトウィンドウに タイトルを表示するのに 次の 記述をしましたが エラーになりました。 実行時エラー '-2147467259 (80004005)': 'Document' メソッドは失敗しました: 'IWebBrowser2' オブジェクト なぜでしょうか? IEは11です。 エクセルは2013 OSは windows7 ホームプレミアム vbsは次の通り Sub okwave() Dim colSh As Object Dim win As Object Dim strTemp As String Dim objIE As Object Set colSh = CreateObject("Shell.Application") For Each win In colSh.Windows If TypeName(win.document) = "HTMLDocument" Then If InStr(win.document.Title, "okwave") > 0 Then Set objIE = win Exit For End If End If Next Debug.Print objIE.document.Title End Sub

  • 【VBA】IEのリンクを新しいタブで開く

    VBAでIEを制御しリンク(アンカー)<a href="***">を新しいタブで開くようにしたいのですが可能でしょうか? 仮にグーグルのトップページ(http://www.google.co.jp/)の『検索オプション』(http://www.google.co.jp/advanced_search?hl=ja)を新しいタブで開くとします 実際に開きたいリンクのURLは固定ではないためURLの指定では開けませんが、飛びたいリンクの文言(『検索オプション』)は固定です リンクに飛ぶ前に飛ぶ先のURLを取得する仕方か、Shift+Ctrl+クリックのようにリンクを新しいタブで開く方法を教えてください 一度普通にリンクに飛んでからURLを取得し、戻ってから新しいタブで開くぐらいしかできないのでしょうか? Sub 新しいタブで開く() Dim objIE As Object Dim objShell Dim URL As String Set objShell = CreateObject("Shell.Application") For n = objShell.Windows.Count To 1 Step -1 Set objIE = objShell.Windows(n - 1) If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE" Then objIE.Navigate "http://www.google.co.jp/" Exit For End If Next Set objShell = Nothing objIE.Visible = True Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop For Each Obj In objIE.Document.getElementsByTagName("a") If Obj.innerText = "検索オプション" Then Obj.Click Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop URL = objIE.Document.URL objIE.GoBack Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Navigate URL, CLng(&H800) Exit For End If Next End Sub よろしくお願いいたします

  • IEブラウザよりmsgboxを手前に表示したい

    当方 IE9+2007です。 Sub yahoo() Dim objIE As Object Dim i As Long Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Do Until objIE.Busy = False And objIE.ReadyState = 4: Loop If objIE.Document.Body.innerHTML Like "*こんにちは、*さん*" Then i = MsgBox("別のIDでログインしています!続けますか?", vbYesNo + vbApplicationModal) If i = 7 Then End End If End Sub このような事がやりたいのですが、 IEブラウザを立ち上げてメッセージボックスをvbApplicationModalで表示させても ブラウザより裏側で表示されてしまいます。 If objIE.Document.Body.innerHTML Like "*こんにちは、*さん*" Then i = MsgBox("別のIDでログインしています!続けますか?", vbYesNo + vbApplicationModal) If i = 7 Then End End If objIE.Visible = True という順番にすればよいのですが、他のコードの関係もあってメッセージボックスより先にブラウザを表示させたいのです。 そんな事は可能でしょうか? ご回答よろしくお願いします。

  • エクセルVBAで、IEからコピーするには

    エクセル2000,win2000,IE6です。 次のような、コードを書きました。 Sub t03ccc() Dim objIE As Object 'IE オブジェクト参照用 Dim objShell As Object 'Shell オブジェクト参照用 Dim objWindow As Object 'Window オブジェクト参照用 Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows '起動中のタイトルを探して。 If Left(objWindow.document.Title, 7) = "Office系" Then Set objIE = objWindow 'オブジェクトを代入 Msg = "Office系" Exit For End If Next If Msg <> "Office系" Then MsgBox "・・・スクリーニング結果一覧・・・がありません" Exit Sub End If objIE.ExecWB 17, 0 'OLECMDID_SELECTALL = 17 全てを選択 objIE.ExecWB 12, 0 'OLECMDID_COPY = 12 コピー Sheets("Sheet3").Select Rows("1:200").ClearContents Range("A1").Select ActiveSheet.Paste '''' objIE.Quit Set objIE = Nothing Set objShell = Nothing Set objWindow = Nothing End Sub これで、エクセルとIEしか開いてないときは巧くいくのですが、 エクスプローラーを同時に開くと実行時エラー438が出ます。 よろしくお願いします。

  • IEを探すプログラムがうまくいきません。

    VBScriptで指定するサイトが開いていなかった場合とある処理を行い、とあるサイトが開いていれば別の処理をし終了させることをやっていますがうまくいきません。 自分の考えとしては 1・開いているIEをくるくるループ回して探す 2・その中にヤフーがあればフラグをTrue処理   それ以外はFalse処理 これだけで終わりにしたいのですが・・・ Dim objIE Dim objShell Dim objWindow Dim WinExist Dim strURL Dim Flug Dim strURL2 strURL = "http://www.yahoo.co.jp/" strURL2 = "http://www.google.co.jp/" 'IEが起動して無い場合プログラムが起動しないのでダミー立ち上げ Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" objIE.Visible = True Set objIE = Nothing WinExist = False Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.Document) = "HTMLDocument" Then WinExist = True Set objIE = objWindow End If Next If objIE.LocationURL = strURL Then Flug = True Else If objIE.LocationURL <> strURL Then Flug = False Else WScript.sleep(1) End If If Flug = False Then Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Navigate strURL2 objIE.Visible = True Set objIE = Nothing End If ' 'いろいろな処理があるが省く ' If Flug = True Then msgbox "ヤフー存在" End If End If 絶対にフラグがTrueになることがありません。 Excelでデバッグしてみましたがなぜうまくいかないのかが理解できておりません。 自分としては開いているIEをぐるぐるとまず回ってヤフーが開いていればTrue時の処理を行い終了、 なければFalse時の処理を行うという風にしたいです(無限ループではありませんでした) For eachを使っているので途中でIf Flug以降の処理を行ってしまうのも無駄な繰り返しで困ってしまいます。 そこでフラグを立てることを考えたのですがどうも思うようにいきません。 ボキャブラリが足りませんが、いい知恵を貸していただけないでょうか?