プロが教える店舗&オフィスのセキュリティ対策術

現在、エクセルの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です

A 回答 (2件)

>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

この回答への補足

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

補足日時:2002/09/30 19:28
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/02 00:23

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に変えれば、コンパイルエラーはなくなると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/10/02 00:25

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