マクロでエクセルのセルに検索文字を入力し、文字化けする問題について

このQ&Aのポイント
  • エクセルのマクロを使用して、セルに検索したい文字を入力すると、文字化けしてしまう問題が発生しています。
  • グーグル検索のマクロを作成する際に、エスケープ処理が必要なのかどうか検討しています。
  • PC版のグーグルでは同じコードが正常に動作するため、エクセル側の問題である可能性があります。
回答を見る
  • ベストアンサー

マクロ グーグルモバイル

エクセルのセルに検索したい文字を入力し、 マクロで以下のコードをやったのですが、 Sub メニュー追加() With CommandBars("Cell").Controls.Add(before:=1) .Caption = "グーグル検索" .OnAction = "グーグル検索" End With End Sub Sub グーグル検索() CreateObject("Wscript.Shell").Run "http://google.com/m?q=" & ActiveCell.Value, 1 End Sub 文字化けしてしまいます。 エクセルに入力されている文字を一度エスケープにしないと無理なのでしょうか? PCのグーグルだと、なぜかできます。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

[ANo.1] の DOUGLAS_ です。 >ヤフーPCもエンコードしないとできないみたいなので、 >教えていただいたマクロでヤフーPCをやってみたところ >エンコードされず、文字化けしてしまった  恐らく、検索URL の文字列が間違っているのではないでしょうか?  試したところ、下記でいけました。 CreateObject("Wscript.Shell").Run "http://search.yahoo.co.jp/search?p=" & UrlEncodeUtf8(ActiveCell.Value), 1

aslikethat
質問者

お礼

できました^^ urlencodeが抜けていました。 DOUGLASさん今回は大変ありがとうございました。 また機会があればよろしくお願いします。

その他の回答 (1)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

◆◆google mobile における URLエンコード の是非◆◆ >エクセルに入力されている文字を一度エスケープにしないと無理 のようですね。  ただし、論拠は発見しておりません。 >エスケープにしないと無理なのでしょうか?  このご質問の趣旨が、エスケープ(エンコード)の方法ではなくて、その是非をお問い合わせになっていらっしゃるのでしたら、これ以降はスルーなさってください。 ◆◆エクセル VBA での URLエンコード の方法◆◆ ●VB6・VBAで簡単にURLエンコード・デコードする方法 http://komet163.blog36.fc2.com/blog-entry-18.html に、ちょうどよいサンプルが載っていますので、 CreateObject("Wscript.Shell").Run "http://google.com/m?q=" & ActiveCell.Value, 1 以下を CreateObject("Wscript.Shell").Run "http://google.com/m?q=" & UrlEncodeUtf8(ActiveCell.Value), 1 End Sub Public Function UrlEncodeUtf8(ByRef strSource As String) As String Dim objSC As Object Set objSC = CreateObject("ScriptControl") objSC.Language = "Jscript" UrlEncodeUtf8 = objSC.CodeObject.encodeURIComponent(strSource) Set objSC = Nothing End Function としてお試しください。

aslikethat
質問者

補足

DOUGALASさん、ご回答ありがとうございます。 教えていただいたマクロをやってみたところ、 問題なく一発でできました^^ わかりやすく丁寧にありがとうございました。 ヤフーPCもエンコードしないとできないみたいなので、教えていただいたマクロでヤフーPCをやってみたところエンコードされず、文字化けしてしまったのですが、なぜなのでしょうか? このPUBLIC FUNCTIONはグーグルモバイルにのみ適用されるとうことでしょうか?

関連するQ&A

  • EXCEL VBA でマクロが作動するシートとしないシートがある。

    右クリックのショートカットメニューに作成したマクロを追加しました。その追加マクロを実行しても右クリックのショートカットに追加されないシートがあります。同じbookでもその他のシートでは、右クリックのショートカットメニューに追加されているものもあります。 なぜでしょうか? できないのは、右クリックのショートカットの表示です。目的の動作(下記の場合は、フォントの色を変える)は、どのシートでも作動します。 ちなみにプロシージャーは次のように書いています。PERSONAL.XLSに登録してあります。 宜しくお願いします。 'セルの右クリックショートカットメニューを作成 Sub 色々右クリック() 赤みぎクリック 黒みぎクリック 青みぎクリック End Sub Sub 赤みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "赤" .OnAction = "赤フォント" .BeginGroup = False End With End Sub Sub 赤フォント() Selection.Font.ColorIndex = 3 End Sub Sub 黒みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "黒" .OnAction = "黒フォント" .BeginGroup = False End With End Sub Sub 黒フォント() Selection.Font.ColorIndex = 1 End Sub Sub 青みぎクリック() Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "青" .OnAction = "青フォント" .BeginGroup = False End With End Sub Sub 青フォント() Selection.Font.ColorIndex = 5 End Sub Sub Reset_RightClick() Dim rightBar As CommandBar Application.CommandBars("cell").Reset End Sub

  • Excel2007互換モードでの右クリックロジック

    100件程度の実績のあるソフトですが、あるお客様のみ不思議な現象が発生しています。 そのお客様はWindowsXP & Excel2007の組み合わせで、ソフトは互換モードで動作しています。 Option Compare Text Option Explicit Sub migi_del() Dim icbc Application.CommandBars("cell").Reset For Each icbc In Application.CommandBars("cell").Controls icbc.Delete Next icbc End Sub Sub migi_add() Dim icbc Application.CommandBars("cell").Reset For Each icbc In Application.CommandBars("cell").Controls icbc.Delete Next icbc With Application.CommandBars("cell").Controls _ .Add(Type:=msoControlButton, Temporary:=True) .Caption = "Message!" .OnAction = "aaa" End With End Sub Sub migi_addTag() Dim icbc Application.CommandBars("cell").Reset For Each icbc In Application.CommandBars("cell").Controls icbc.Delete Next icbc With Application.CommandBars("cell").Controls _ .Add(Type:=msoControlButton, Temporary:=True) .Caption = "Message!" .OnAction = "aaa" .Tag = "aaa" End With End Sub Sub migi_Rest() Dim icbc Application.CommandBars("cell").Reset End Sub Sub aaa() MsgBox "OK" End Sub Sub Sample() Application.CommandBars("Row").Reset Application.CommandBars("Column").Reset End Sub の何れの操作を行っても、右クリックは標準のものが表示されてしまいます。 WindowsXP & Excel2007の組み合わせの他のお客様ではこのような現象は出ていません。 何方か理由をご存知の方はいらっしゃいませんか?

  • Excell2010VBAmacro互換性

    マイクロソフトオフィス2010EXCELマクロについて質問させてください。 VBAマクロでマウス右クリック時にポップアップメニューを出し、 自作マクロを呼び出すようにしました。動作している。 このマクロを別PCのオフィス2013で動作させると、 マクロ内部ではポップアップメニューを作成動作している ようです(デバッグで通っていること確認)ようですが、 EXCEL画面上にはメニューが表示されません。 サンプルマクロは下記参照。 非互換または設定漏れがあるのでしょうか?   サンプルマクロ Sheet1 --------------------------------------- Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Application.CommandBars("Cell").Reset '右クリックメニューを初期設定に戻す Call set_RightMenu '右メニュー登録 End Sub Module1 --------------------------------------- Sub reset_RightMenu() ' '右クリックメニューを初期化 ' Application.CommandBars("Cell").Reset End Sub Public Sub set_RightMenu() ' ' 右クリックメニューを設定する ' Call reset_RightMenu '右クリックメニュー初期化 With Application.CommandBars("Cell") _ .Controls.Add() .BeginGroup = True .Caption = "menu0" .FaceId = 682 .OnAction = "menu0" End With With Application.CommandBars("Cell") _ .Controls.Add(Type:=msoControlPopup) .BeginGroup = True .Caption = "SubMenu" With .Controls.Add(Type:=msoControlButton) .Caption = "menu1" .FaceId = 931 .OnAction = "menu1" End With With .Controls.Add(Type:=msoControlButton) .Caption = "menu2" .FaceId = 931 .OnAction = "menu2" End With End With End Sub Sub menu0 MsgBox "****** Menu 0 *******" End Sub Sub menu1 MsgBox "****** Menu 1 *******" End Sub Sub menu2 MsgBox "****** Menu 2 *******" End Sub

  • エクセル2007で自前のツールバーを作る方法

    エクセル2000です。 以下のマクロで自前の新しいツールバーが作れ、作動します。 ところがエクセル2007ではうんともすんとも言ってくれません。 エクセル2007で使う場合はどのようにしたらよいでしょうか? ユーザーフォームで似たようなものを作る方法はわかるのですが、できれば以下の方法を使いたいのです。 Sub 三択メニュー() On Error Resume Next Application.CommandBars("選択します").Delete On Error GoTo 0 Application.CommandBars.Add Name:="選択します", Position:=msoBarFloating With Application.CommandBars("選択します") .Visible = True .Controls.Add Type:=msoControlButton With .Controls(1) .Style = msoButtonCaption .Caption = "⇒メニュー1 " .OnAction = "Msg_1" End With .Controls.Add Type:=msoControlButton With .Controls(2) .Style = msoButtonCaption .Caption = "⇒メニュー2 " .OnAction = "Msg_2" End With .Controls.Add Type:=msoControlButton With .Controls(3) .Style = msoButtonCaption .Caption = "⇒メニュー3 " .OnAction = "Msg_3" End With End With End Sub Sub Msg_1() Application.CommandBars("選択します").Delete MsgBox "追加コマンド1を処理しました。" End Sub Sub Msg_2() Application.CommandBars("選択します").Delete MsgBox "追加コマンド2を処理しました。" End Sub Sub Msg_3() Application.CommandBars("選択します").Delete MsgBox "追加コマンド3を処理しました。" End Sub

  • IEの中のエクセルから、通常のエクセルへコピーしたい。

    IEの中のエクセルから、通常のエクセルへコピーしたい。 ネット上のアクティブセルから、自分のパソコンのエクセルへセルの内容を コピーしたいのですが、うまくアクティブになりません。 よろしくお願いします。 Sub TENKI() 部材記号 = ActiveCell.Value 部材名 = ActiveCell.Offset(0, 2).Value ActiveCell.Offset(1).Select イエス = MsgBox(部材記号 & " 部材名も必要ですか?", vbYesNo) If イエス = 6 Then ActiveCell = 部材記号 ActiveCell.Offset(0, 2).Value = 部材名 ActiveCell.Offset(1).Select ElseIf イエス = 7 Then ActiveCell = 部材記号 ActiveCell.Offset(1).Select End If End Sub Private Sub Workbook_Open() With Application.CommandBars("Cell").Controls.Add(Temporary:=True) .Caption = "転記" .OnAction = "TENKI" .BeginGroup = True End With End Sub

  • Excel2003で作成したマクロが2000で不具合が生じました。

    Excel2003で作ったマクロを2000で実行したところこの命令でエラーになってしまいました。恐らく参照設定の問題だと思いますが、どの参照が問題なのでしょうか?   If Environ("COMPUTERNAME") = "Z7890580" Then     Exit Sub   End If このVBAのブックの特定のシートで右クリックでオプション選択できるようになっていましたが、上記エラーが生じた後、そのPCでエクセルを実行すると、このブックを閉じても常に右クリックするとオプションが表示されるようになってしまいました。 どのようにすれば出ないようになるのでしょうか? よろしくお願い申し上げます。 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)   Application.CommandBars("Cell").Reset   With Application.CommandBars("Cell").Controls.Add     .BeginGroup = True     .Caption = "ReadOnlyで開く"     .FaceId = 59     .OnAction = "Selection_File_Open"   End With End Sub

  • EXCELで右クリックメニューの追加

    EXCELで右クリックメニューを追加するにあたり、以下のコードをネットで取得しました。 右クリックメニューを階層化してさらに、いくつか選べるようにするにはどうしたら良いのでしょうか? ------------------------------------------------------------- Dim Newb Set Newb = Application.CommandBars("Cell").Controls.Add() With Newb .Caption = "コマンド" .OnAction = "Sample_cmd" .BeginGroup = False End With Sub Sample_cmd() MsgBox Now End Sub ------------------------------------------------------------- 判る方お願いします。

  • エクセルVBA 保護シート&フィルタ実行 全シート

    VBA超初心者です。 たくさんのシートのあるエクセルで、 シート保護後もフィルタを使用できるようにVBAを設定したいと思ってます。 (現在エクセル2000を使用してます) ネットで調べてVBAを設定してみました。 しかし下記のようにするとコンパイルエラーになってしまうのですが、 正しい方法を教えていただけると助かります。 Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean)   Application.CommandBars("Cell").Reset End Sub Private Sub Workbook_Open()   With Application.CommandBars("Cell").Controls.Add( _            Type:=msoControlButton, Before:=1, Temporary:=True)     .Caption = "AutoFilter"     .OnAction = "ThisWorkbook.filter"   End With   With Worksheets.Select     .Unprotect     .EnableAutoFilter = True     .Protect UserInterfaceOnly:=True   End With End Sub Private Sub filter()   On Error Resume Next   Selection.AutoFilter End Sub

  • マクロ 指定したブラウザで開く

    エクセルマクロに以下のコードを入れてあるのですが、 Sub グーグル検索() CreateObject("Wscript.Shell").Run "http://google.co.jp/search?q=" & (ActiveCell.Value), 1 End Sub これでやると、標準に設定しているブラウザ(sleipnirを設定しています)で開いてしまうのですが、たまにファイアフォックスで開きたいときがあるので、ファイアフォックスで開きたいときはファイアフォックスで開く、という風にするにはどうすればいいのでしょうか?

  • VBAで作ったCheckBoxesの名前を知りたい。

    VBAでCheckBoxeを3個作りsub checkをコールできる用にしました。 このsub checkのなかで今どのCheckBoxeがクリックされたか調べたいのですがどうすればいいでしょうか、 Sub main() With ActiveSheet.CheckBoxes.Add(10, 10, 20, 20) .Name = "CheckBox " & .Index .Caption = "" .OnAction = "check" End With With ActiveSheet.CheckBoxes.Add(10, 50, 20, 20) .Name = "CheckBox " & .Index .Caption = "" .OnAction = "check" End With With ActiveSheet.CheckBoxes.Add(10, 100, 20, 20) .Name = "CheckBox " & .Index .Caption = "" .OnAction = "check" End With End Sub Sub check() '// クリックされたcheckboxの番号が知りたい// End Sub

専門家に質問してみよう