• ベストアンサー

VBAでURLをブラウザで起動させたい

現在、エクセルのVBAのフォーム上のコマンドボタンから、URLをブラウザで起動させたいと思っているのですが、うまくいきません。 インターネット上で以下のプログラムが紹介されていたので試したのですが hwnd の所でエラーとなってしまいます。 Option Explicit Private 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 Private Sub cmdGO_Click() ShellExecute Me.hwnd, "Open", "http://www.goo.ne.jp/", _ vbNullString, App.Path, 1 End Sub また、エクセルのハイパーリンクを使って、あるセル上に事前に設定しておき、コマンドボタンをクリックした時にそのセルのハイパーリンクを起動させることにしました。しかしブラウザは起動するのですが、ブラウザを閉じるとエクセルの画面が最小化されています。(最大化しようとして右クリックしてもなにも出てきません)同じエクセルファイルをダブルクリックするとやっとエクセルが画面表示されます。 ブラウザを閉じた時に画面上にエクセル画面を表示させたいのですがどのようにすれば良いのでしょう。分かる方が見えましたら宜しくお願いします。 このプログラムは以下のように作成しました Private Sub CommandButton3_Click()   Worksheets("データ").Select Range("J18").Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True Application.WindowState = xlNormal End Sub ソフトは EXCEL2000です

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

  • ベストアンサー
  • akinori_s
  • ベストアンサー率60% (21/35)
回答No.1

>ShellExecute Me.hwnd, "Open", "http://www.goo.ne.jp/", _ >vbNullString, App.Path, 1 これって多分VBのサンプルを見たんですよね? 多分Excelで動作させるのでしたら、下記のようにすれば 大丈夫だと思います。 ShellExecute vbNull, "Open", "http://www.goo.ne.jp/", _ vbNullString, vbNullString, 1

kamechan
質問者

お礼

すみません。できました。 補足で書き込みしたときは、以下のプログラムを消していました。 これ以降を書き直したところ上手くいきました。ありがとうございました。 また、なにかありましたら宜しくお願いいたします。では Option Explicit Private 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

kamechan
質問者

補足

Y(>_<、)Y ヒェェ! お早いご回答ありがとうございます。 早速、試させていただきました。がが・・ 初心者なものでお手数おかけしますが ShellExecuteでコンパイルエラー SubまたはFunctionが定義されていませんとなります。 Public ShellExecute As Objectを追加してみたのですがダメです。多分見当違いなことをしているのだと思います。 申しわけありませんが、再度ご教授お願いいたします。

その他の回答 (1)

回答No.2

Option Explicit Private 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 がShellExecute関数を宣言しているわけですので、 Private を Publicに変えれば、コンパイルエラーはなくなると思います。

kamechan
質問者

お礼

Private を Publicに書き換えなくても上手くいきました。 お手数おかけしました。ありがとうございました。

関連するQ&A