URL名を取得する方法
- Web Browserを使用して、特定のURLの名前を取得する方法について教えてください。
- 現在、WebBrowserコントロールを使用してURLにアクセスしていますが、名前を取得する方法がわかりません。
- Debug.Print Form_フォーム1.WebBrowser1.Navigate.NameやForm_フォーム1.WebBrowser1.url.Nameを試しましたが、エラーになりました。
- ベストアンサー
URL名を取得するには?
アクセスのフォームに Web Browserを設置して、 Me.WebBrowser1.Navigate "http://www.yahoo.co.jp/" としました。 その時、サイト名(名前)を、タブに表示したいのですが、まず名前の取得ができません。 http://www.yahoo.co.jp/の名前は「Yahoo! JAPAN」です。 Sub a() Debug.Print Form_フォーム1.WebBrowser1.Navigate.Name Debug.Print Form_フォーム1.WebBrowser1.url.Name End Sub どちらもエラーになってしまいます。 ご教授よろしくお願いします。
- kjrweugdbyu
- お礼率100% (20/20)
- Visual Basic
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
フォームを開くときでも、ボタンクリック時でも いいのですが、たとえば、クリック時でYAHOOを 表示するならば、 Private Sub コマンド1_Click() Me![WebBrowser1].Navigate "http://www.yahoo.co.jp/" End Sub のように表記します。 次に、 Sub a() Debug.Print Form_フォーム1.WebBrowser1.Navigate.Name Debug.Print Form_フォーム1.WebBrowser1.url.Name End Sub は、標準モジュールに設定しているものとすると、 フォームオブジェクトの表記方法が間違っています。 フォーム1がフォームの名前とすると、Form_フォーム1 という表記はたぶんコード表のプロジェクトに表示 されているものでしょうが、実際にこのような表記を VBAコードで表記することは特別な場合を除いてありません。 したがって、標準モジュールで設定しているとすれば、 Sub a() Debug.Print Forms!フォーム1![WebBrowser1].Document.Title Debug.Print Forms!フォーム1![WebBrowser1].Document.URL End Sub もし、フォーム1に設定したボタンのクリック時のイベント に設定するならば、 Private Sub コマンド2_Click() Debug.Print Me![WebBrowser1].Document.Title Debug.Print Me![WebBrowser1].Document.URL End Sub あるいは、 Private Sub コマンド2_Click() MsgBox Me![WebBrowser1].Document.Title MsgBox Me![WebBrowser1].Document.URL End Sub のようにします。
その他の回答 (3)
- piroin654
- ベストアンサー率75% (692/917)
No3です。 Sub a() が標準モジュールに設定されているならば、 当然ながらフォーム1は開かれている必要がありますし、 このSubプロシージャを呼び出すには、単純には フォームのボタンクリックで呼び出したりすると 思いますが、その場合は Private Sub コマンド3_Click() Call a End Sub のような呼び出しをしているものとします。 また、 Private Sub コマンド2_Click() Debug.Print Me![WebBrowser1].Document.Title Debug.Print Me![WebBrowser1].Document.URL End Sub は、 Private Sub コマンド2_Click() Debug.Print Forms!フォーム1![WebBrowser1].Document.Title Debug.Print Forms!フォーム1![WebBrowser1].Document.URL End Sub あるいは、 Private Sub コマンド2_Click() MsgBox Forms!フォーム1![WebBrowser1].Document.Title MsgBox Forms!フォーム1![WebBrowser1].Document.URL End Sub のようにMeを使わずに、Formsを使用することもできます。
お礼
再度詳しいご説明ありがとうございます。
- watabe007
- ベストアンサー率62% (476/760)
間違っていたら、ごめんなさいね ExcelならDocumentCompleteイベントがあって Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) MsgBox pDisp.Document.Title '⇒Yahoo! JAPAN MsgBox URL '⇒http://www.yahoo.co.jp/ End Sub と、取得できるんですが・・・
お礼
エクセルならできるのですか。 アクセスのWebBrowserのイベントは、 Private Sub WebBrowser1_Enter() End Sub Private Sub WebBrowser1_Exit(Cancel As Integer) End Sub Private Sub WebBrowser1_GotFocus() End Sub Private Sub WebBrowser1_LostFocus() End Sub Private Sub WebBrowser1_Updated(Code As Integer) End Sub しかないようで、 MsgBox pDisp.Document.Title '⇒Yahoo! JAPAN MsgBox URL '⇒http://www.yahoo.co.jp/ を貼り付けてみたら、 「pDisp」の部分でエラーになってしまいました。 せっかくご回答いただいたのにすいません。
- singlecat
- ベストアンサー率33% (139/418)
webBrowser1.DocumentTitle です
お礼
MsgBox Form_フォーム1.WebBrowser1.DocumentTitle にすると、エラーになってしまいます・・・
補足
エラー内容は、 オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) です。 再度ご回答いただければ幸いです。
関連するQ&A
- アクセスのフォームに動画を入れたいと思っています。
アクセスのフォームに動画を入れたいと思っています。 手順については、こちらのサイトで下記を見つけたのでそれを参考にしました。 (1)GIF動画を貼り付けたHTMLファイルを作成します。 例えば、C:\test.htm (2)Microsoft Web Browserをフォームの中に埋め込みます。 例えば、『WebBrowser0』という名前にします。 (3)フォーム読み込み時にそのページを呼び出します。 Private Sub Form_Load() WebBrowser0.Navigate "C:\test.htm" End Sub これで、フォームを開いたときに、test.htmが表示されるはずです。表示サイズなどは調整してください。 ここまでが参考にした文章です。それで、下記が私の作成したVBAです。 Private Sub Form_Load() WebBrowser0.Navigate "test.htm" End Sub test.htmという画像をファイルに保存しました。プロパティはインターネットエクスプローラーで、ダブルクリックすると動画になっています。 しかし、アクセスに上記のコードを入力すると、 Web ページへのナビゲーションは取り消されました と表示されます。(WEBページのように見えますので、一応、WebBrowser0.Navigate は機能しているが、このtest.htmのファイルが何か悪いのでしょうか。 どなたか、何が間違いか教えていただけないでしょうか。
- ベストアンサー
- Visual Basic
- 現在表示されているURLを取得したいのですが
Sub test1() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.goo.ne.jp/" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Debug.Print objIE.Navigate Set objIE = Nothing End Sub //////////////////////////////////////////////// をやろうとすると、 Debug.Print objIE.Navigate の部分で、「引数は省略できません。」とエラーになります。 どう修正すればいいか教えてください。 ("http://www.goo.ne.jp/"はダミーです)
- ベストアンサー
- オフィス系ソフト
- なぜNavigateは候補に表示されないのでしょう
なぜNavigateは候補に表示されないのでしょうか? フォームを作成し、 ツールボックス→[コントロールの選択]で Microsoft Web Browserをクリックしてフォーム上に設置しました。 そしてVBA画面のForm_Loadイベントで Me.WebBrowser1.Navigate URL を記述しようと思い Me.WebBrowser1.nと入力してもNameしか出てきません。 なぜNavigateは候補に表示されないのでしょうか? オブジェクトブラウザでNavigateを検索してみると [SHDocVw.WebBrowser のメンバ] としてヒットするので、 Me.WebBrowser1.nと入力したあとに表示されても良い気がするのですが・・・ Navigateのスペルは覚えにくいので候補が出たらいいなーと思っています。 ご教授よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 全てのサブフォーム名を取得したい
オフィス2007です。 Sub test() Dim obj As AccessObject For Each obj In CurrentProject.AllForms Debug.Print obj.Name Next End Sub --------------------------------- 上記のコードでデータベースのすべてのフォーム名は取得できますが フォーム1に乗っかっている複数のサブフォームを取得するにはどうすればいいのでしょうか? サブフォームに独自の名前を付けて、IFステートメントを使うしかないですか?
- ベストアンサー
- オフィス系ソフト
- Current、Openがそれぞれ2回発動する
テーブルには適当なデータが入っています。 フォーム1を作り、コマンドボタンを1個だけ設置して、フォーム2を開くようにするために Private Sub コマンド0_Click() DoCmd.OpenForm Form_フォーム2.Name End Sub としました。 フォームはテーブルをレコードソースとしています。 フォーム2のモジュールに Private Sub Form_Current() Debug.Print "Form_Current" End Sub Private Sub Form_Open(Cancel As Integer) Debug.Print "Form_Open" End Sub としたのですが、結果は Form_Open Form_Current Form_Open Form_Current になります。 よって、二つのイベントの中にいくつかのプロシージャーが入っているのですが 2回ずつ実行されてしまい、求めている結果と異なってしまいます。 これを回避する方法はありますか? どうしてもフォーム1のコマンドボタンを押して、フォーム2をひらきたいのです。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- フォームを表示してからメッセージボックスを表示する
メッセージボックスが表示される前に、フォームを表示させたいです。アクセスです。 ナビゲーションウインドウからフォームをダブルクリックしてフォームを開くのですが、 今のままだとメッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを表示してからメッセージボックスを表示するにはどうすればいいでしょう? Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" End Sub だと、先ほど述べたように、メッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを開いたときのイベントは複数あるようで、 Private Sub Form_Activate() MsgBox "Form_Activate" Debug.Print "Form_Activate" End Sub Private Sub Form_Current() MsgBox "Form_Current" Debug.Print "Form_Current" End Sub Private Sub Form_GotFocus() MsgBox "Form_GotFocus" Debug.Print "Form_GotFocus" End Sub Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" Debug.Print "Form_Open" End Sub Private Sub Form_Load() MsgBox "Form_Load" Debug.Print "Form_Load" End Sub をすると、 ・Form_Load ・Form_Activate ・Form_GotFocus ・Form_Open ・Form_Current の順に開きますが、やはりフォームが最後に表示されてしまいます。 どうにかして先にフォームを表示させる方法はないでしょうか? ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- WebBrowser WEBページ更新時に音を出し
WebBrowser WEBページ更新時に音を出したくない アクセスのフォームにWebBrowserコントロールを置いて、 Private Sub Form_Open(Cancel As Integer) Me.WebBrowser0.Navigate "http://finance.yahoo.co.jp/" End Sub としました。 コマンドボタンも設置して、 Private Sub コマンド1_Click() Me.WebBrowser0.Refresh End Sub としました。 フォームを開いたり、コマンドボタンを押したらサイトが表示されますがその際、音が鳴ります。 「シュッシュ」と言う感じです。 その音を出さない方法なんてありますか? その音だけ出したくないので、ミュートにはしたくないです。 でもなぜかhttp://finance.yahoo.co.jp/だと音は鳴るけど http://oshiete.goo.ne.jp/にすると音は鳴りません。 OS:wi7、オフィス2007です。 ご回答よろしくお願いします。
- ベストアンサー
- Visual Basic
- {アクセス}全てのフォームの名前を取得したい
ひとつのMDBファイルに入っている全てのフォームの名前を取得したいのですが Sub 全てのフォームの名前を取得() Dim i As Integer For i = 1 To Forms.Count Debug.Print Forms.Name Next End Sub このコードだと オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) となってしまいます。 どうすればいいでしょうか よろしくお願い致します。
- ベストアンサー
- Visual Basic
- 現在アクティブなフォーム名を取得するには
アクセスの標準モジュールでのプロシージャーで、現在アクティブなフォーム名を取得したいです。 フォームモジュールなら、Me.Nameでイケますが、すべてのフォームから使えるように、 標準モジュールで作りたいのですが、どうすればいいでしょう? Debug.Print ActiveForm.Name とすると、コンパイルエラーになります。 Debug.Print ActiveForms.Nameでも同じです。ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- コントロールのタイプを取得したい場合
Sub test() Dim i As Integer Dim StrFormName As String StrFormName = "UserForm1" With UserForms.Add(StrFormName).Controls For i = 0 To .Count - 1 Debug.Print .Item(i).Name Next End With End Sub これでエクセルのユーザーフォーム上のすべてのコントロール名が取得できるのですが、 コントロールのタイプを取得したい場合、 Debug.Print .Item(i).Name の部分をどう変えればいいのでしょうか? 例えばコマンドボタンなら、「CommandButton」と返ってきてほしいです。 Debug.Print .Item(i).Controlstype でも Debug.Print .Item(i).Controltype でもエラーになりました。
- ベストアンサー
- Excel(エクセル)
お礼
Form_フォーム1.WebBrowser1 ではなく、 Forms!フォーム1![WebBrowser1] と、記述するべきでしたね! Debug.Print Forms!フォーム1![WebBrowser1].Document.Title Debug.Print Forms!フォーム1![WebBrowser1].Document.URL にしたら、 フォームモジュールでも標準モジュールでも問題なく出来ました。ありがとうございました。大変参考になりました。