マクロでエクセルのセルに検索文字を入力し、文字化けする問題について
- エクセルのマクロを使用して、セルに検索したい文字を入力すると、文字化けしてしまう問題が発生しています。
- グーグル検索のマクロを作成する際に、エスケープ処理が必要なのかどうか検討しています。
- 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のグーグルだと、なぜかできます。
- aslikethat
- お礼率7% (8/105)
- オフィス系ソフト
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
[ANo.1] の DOUGLAS_ です。 >ヤフーPCもエンコードしないとできないみたいなので、 >教えていただいたマクロでヤフーPCをやってみたところ >エンコードされず、文字化けしてしまった 恐らく、検索URL の文字列が間違っているのではないでしょうか? 試したところ、下記でいけました。 CreateObject("Wscript.Shell").Run "http://search.yahoo.co.jp/search?p=" & UrlEncodeUtf8(ActiveCell.Value), 1
その他の回答 (1)
- DOUGLAS_
- ベストアンサー率74% (397/534)
◆◆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 としてお試しください。
補足
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
- 締切済み
- その他MS Office製品
- 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
- ベストアンサー
- その他MS Office製品
- 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
- ベストアンサー
- Windows NT・2000
- 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
- ベストアンサー
- Visual Basic
お礼
できました^^ urlencodeが抜けていました。 DOUGLASさん今回は大変ありがとうございました。 また機会があればよろしくお願いします。