URL名を取得する方法

このQ&Aのポイント
  • 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 どちらもエラーになってしまいます。 ご教授よろしくお願いします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

フォームを開くときでも、ボタンクリック時でも いいのですが、たとえば、クリック時で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 のようにします。

kjrweugdbyu
質問者

お礼

Form_フォーム1.WebBrowser1 ではなく、 Forms!フォーム1![WebBrowser1] と、記述するべきでしたね! Debug.Print Forms!フォーム1![WebBrowser1].Document.Title Debug.Print Forms!フォーム1![WebBrowser1].Document.URL にしたら、 フォームモジュールでも標準モジュールでも問題なく出来ました。ありがとうございました。大変参考になりました。

その他の回答 (3)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

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を使用することもできます。

kjrweugdbyu
質問者

お礼

再度詳しいご説明ありがとうございます。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

間違っていたら、ごめんなさいね 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 と、取得できるんですが・・・

kjrweugdbyu
質問者

お礼

エクセルならできるのですか。 アクセスの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)
回答No.1

webBrowser1.DocumentTitle です

kjrweugdbyu
質問者

お礼

MsgBox Form_フォーム1.WebBrowser1.DocumentTitle にすると、エラーになってしまいます・・・

kjrweugdbyu
質問者

補足

エラー内容は、 オブジェクトは、このプロパティまたはメソッドをサポートしていません。(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のファイルが何か悪いのでしょうか。 どなたか、何が間違いか教えていただけないでしょうか。

  • 現在表示されている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です。 ご回答よろしくお願いします。

  • {アクセス}全てのフォームの名前を取得したい

    ひとつのMDBファイルに入っている全てのフォームの名前を取得したいのですが Sub 全てのフォームの名前を取得() Dim i As Integer For i = 1 To Forms.Count Debug.Print Forms.Name Next End Sub このコードだと オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) となってしまいます。 どうすればいいでしょうか よろしくお願い致します。

  • 現在アクティブなフォーム名を取得するには

    アクセスの標準モジュールでのプロシージャーで、現在アクティブなフォーム名を取得したいです。 フォームモジュールなら、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 でもエラーになりました。

専門家に質問してみよう