Web画面をプリントする方法(エクセルVBA)

このQ&Aのポイント
  • エクセル2000でVBAを使用してWeb画面を開き、入力して新しい画面を開く方法
  • 開いた画面をプリントするためのコードはどのようになりますか?
  • 解決策を教えてください。
回答を見る
  • ベストアンサー

Web画面をプリントする方法(エクセルVBA)

エクセル2000です。 VBAでNavigateを使いWeb画面(イントラネット)を開き、 .Document.all.Item("Hoge****No").Value = Target.Text のような方法で入力を行い、 .Document.forms(0).submit で送信ボタンクリックして新たな画面を開くところまではできております。 次に、その開いた画面をプリントしたいのです。 どのようなコードになるのでしょうか? ご教示いただければ幸いです。 (o。_。)oペコッ 現在のコードは以下のとおりです。 Dim objIE As Object Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub '複数セル不可 If Target.Column <> 1 Then Exit Sub 'A列のみ対象 'IEが起動しているかチェック。objIE.Nameプロパティの取得に成功したら起動とみなす。 Dim tmp As String On Error Resume Next tmp = objIE.Name If Err.Number <> 0 Then 'エラーならIEが起動していないので、起動する Set objIE = CreateObject("InternetExplorer.Application") End If On Error GoTo 0 With objIE .Navigate "​http://******.co.jp/******/**/***/Details/DetailsScr/init"​ .Visible = True Do While .Busy = True DoEvents Loop .Document.all.Item("Hoge****No").Value = Target.Text 'テストボックスへ入力:Name属性で指定 'オートコンプリートなどの機能が働く場合があるので、念のため待機 Do While .Busy = True DoEvents Loop .Document.forms(0).submit '送信ボタンクリック End With End Sub

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

追加レスつかなかったですね。 『多少は不便』という事なので、一応テストコードだけ全文載せておきます。 URLを入力したセル範囲を選択して実行です。 ([winXP/2000|2003/ie7][vista/2000|2007/ie8]の環境でテスト) '標準モジュール Option Explicit Private Declare Sub Sleep Lib "kernel32.dll" ( _              ByVal dwMillsecounds As Long) Private Declare Function FindWindowA Lib "user32.dll" ( _                    ByVal cnm As String, _                    ByVal cap As String) As Long Sub test()   Const READYSTATE_COMPLETE = 4   Const OLECMDID_PRINTPREVIEW = 7   Const OLECMDEXECOPT_DODEFAULT = 0   Dim r  As Range   Dim hWnd As Long      If TypeName(Selection) <> "Range" Then Exit Sub   With CreateObject("internetExplorer.application")     .Visible = True     For Each r In Selection       .navigate r.Value       While .busy Or (.readyState <> READYSTATE_COMPLETE)         DoEvents       Wend       .ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT       While hWnd = 0         Sleep 500         DoEvents         hWnd = FindWindowA("Internet Explorer_TridentDlgFrame", "印刷プレビュー")       Wend       While hWnd <> 0         Sleep 500         DoEvents         hWnd = FindWindowA("Internet Explorer_TridentDlgFrame", "印刷プレビュー")       Wend     Next   End With End Sub

merlionXX
質問者

お礼

何度もありがとうございます。 しかも勤労感謝の日の夜にまで・・・・。 本当に感謝いたします。 以下のようにやったところうまくいきました! Sub PreviewTEST() Const READYSTATE_COMPLETE = 4 Const OLECMDID_PRINTPREVIEW = 7 Const OLECMDEXECOPT_DODEFAULT = 0 Dim myRng As Range, c As Range Dim hWnd As Long Dim tmp As String On Error Resume Next tmp = objIE.Name If Err.Number <> 0 Then 'エラーならIEが起動していないので、起動する Set objIE = CreateObject("InternetExplorer.Application") End If On Error GoTo 0 Set myRng = Selection For Each c In myRng If c <> "" Then With objIE navigate "​http://******.co.jp/******/**/***/Details/DetailsScr/init"​ .Visible = True Do While .busy DoEvents Loop .document.all.Item("HogeHogeNo").Value = c.Text 'テストボックスへ入力:Name属性で指定 Do While .busy ' = True 'オートコンプリートなどの機能が働く場合があるので、念のため待機 DoEvents Loop .document.forms(0).submit '送信ボタンクリック Do While .busy DoEvents Loop .ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT Do While hWnd = 0 DoEvents hWnd = FindWindowA("Internet Explorer_TridentDlgFrame", "印刷プレビュー") Loop Do While hWnd <> 0 DoEvents hWnd = FindWindowA("Internet Explorer_TridentDlgFrame", "印刷プレビュー") Loop End With End If Next c End Sub ありがとうございました。

その他の回答 (2)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

>Printは出来ましたがPrintPreviewがうまくいきません。 ぅーん...... PrintPreviewは難しそうです... ExecWBは非同期実行されますから、 >For Each c In myRng な使い方だと、プレビュー画面が表示されたまま次の.navigateが実行されてしまいエラーです。 ExecWBを同期実行させるやり方ってあるんでしょうか... そこは私にはわかりません。 私が思いつくのは、ExecWBメソッドの後、プレビュー画面のウィンドウハンドルを取得するまで待って、 それからさらにプレビュー画面ウィンドウが閉じるまで待つ、という方法くらいです。 WindowsAPI関数を使う事になるかと思いますが、そこまでして、その機能を実装しますか? WinAPIも詳しいわけではないので触りしか書きませんが、考え方としては .ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT While hWnd = 0   Sleep 500   DoEvents   hWnd = FindWindow("Internet Explorer_TridentDlgFrame", "印刷プレビュー") Wend While hWnd <> 0   Sleep 500   DoEvents   hWnd = FindWindow("Internet Explorer_TridentDlgFrame", "印刷プレビュー") Wend こんな感じでいけるはず。 不安なので詳しい方からのレスもお待ちください。 ですが、そもそもプレビューは印刷設定の確認の為でしょうか? その場合、Each c で設定せずに、最初の1回だけ確認すれば良かったりしませんか? そのようにLoopを組む事で対応できないですかね? 最初の c だけプレビューしてユーザーに選択させ、OKであれば印刷し、 2個目の c からは印刷だけ...など。 考え方を変えて、時には妥協も必要かと。 MsgBoxはプレビュー画面に隠れてしまいますから、最前面に表示させるようにちょっと工夫が要ります。 WScriptのPopupメソッドを使ったりすると良いでしょう。 If CreateObject("WScript.Shell") _   .Popup("印刷設定はこれでいいですか?", , , vbYesNo + vbSystemModal) = vbYes Then Else End If いずれにしても、これ以上の追加アドバイスはできそうもないので ご自分で色々と調べて工夫してみてください。

merlionXX
質問者

お礼

end-uさま、いつもありがとうございました。 プレビューしようと思ったのは一旦WEB画面を見て印刷の要否を判断するようにできたらと思ったのです。 それならば、なにもFor Each c ループせずに、最初に質問欄で書いたPrivate Sub Worksheet_SelectionChangeのイベントで一データずつやれば多少は不便ですが何とかなりそうです。 勝手を申しました。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

定番の有益サイトです。 『.ExecWB メソッドを使い、 印刷処理を実行してみた。』 http://ken3-info.blog.ocn.ne.jp/objie/2009/06/execwb_cdcc.html 簡易なサンプル。 Sub test()   Const READYSTATE_COMPLETE = 4   Const OLECMDID_PRINTPREVIEW = 7   Const OLECMDEXECOPT_DODEFAULT = 0   With CreateObject("internetExplorer.application")     .Visible = True     .navigate "http://oshiete1.goo.ne.jp/qa5455536.html"     While .busy Or (.readyState <> READYSTATE_COMPLETE)       DoEvents     Wend     .ExecWB OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DODEFAULT   End With End Sub

merlionXX
質問者

お礼

ありがとうございます。 あまり理解できていませんが以下のようにやったところうまくエクセルデータを入力して表示させた画面を次々とプリントすることができました。 助かりました。 Sub 印刷TEST() Const OLECMDID_PRINT = 6 Const OLECMDEXECOPT_DONTPROMPTUSER = 2 'IEが起動しているかチェック。objIE.Nameプロパティの取得に成功したら起動とみなす。 Dim tmp As String On Error Resume Next tmp = objIE.Name If Err.Number <> 0 Then 'エラーならIEが起動していないので、起動する Set objIE = CreateObject("InternetExplorer.Application") End If On Error GoTo 0 Set myRng = Selection For Each c In myRng If c <> "" Then With objIE .navigate "http://******.co.jp/******/**/***/Details/DetailsScr/init" .Visible = True Do While .busy DoEvents Loop .document.all.Item("HogehopgNo").Value = c.Text Do While .busy DoEvents Loop .document.forms(0).submit '送信ボタンクリック Do While .busy DoEvents Loop .ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER '印刷 End With End If Next c End Sub

merlionXX
質問者

補足

追加の質問で申し訳ありません。 Printは出来ましたがPrintPreviewがうまくいきません。 Const OLECMDID_PRINTPREVIEW = 7 Const OLECMDEXECOPT_DODEFAULT = 0 として .ExecWB OLECMDID_PRINTPREVIEW, , OLECMDEXECOPT_DODEFAULT でやってみましたが最初のプレビュー画面を手動で閉じるとそれから先に行ってくれません。 プリントなら次々に印刷されていくのですが・・・・。 。

関連するQ&A

  • vbaでnanacoにログイン(ie操作)

    私は「緑のパスワードがなくnanacoをお持ちの方」です。 カード記載の番号にはvbaで値を入れることはできるのですが、 nanaco番号に値を入れることとログインボタンを押すことができません。 ********************************************** Sub nanaco() Dim objIE As InternetExplorer Dim myObj As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "https://www.nanaco-net.jp/pc/emServlet" Do While objIE.Busy = True DoEvents Loop Do While objIE.document.readyState <> "complete" DoEvents Loop objIE.document.all("XCID").Value = "12345" objIE.document.all("SECURITY_CD").Value = "Password" For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then myObj.Click Exit For End If End If Next Set objIE = Nothing End Sub ********************************************** これだとまずall("XCID").Value でエラーになります。 ソースでは、 <input name="XCID" tabIndex="1" class="txtBoxLogin" accessKey="1" type="text" maxLength="16" value=""/> となっておりますが、同じコードが二つあるからエラーになるのでしょうか? all("SECURITY_CD").Value は問題なくできます。 ソースにも、SECURITY_CDは一つしかないです。 次にログインボタンも二つあるのですが、 For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then myObj.Click Exit For End If End If Next このコードを実行すると、多分上の方のログインボタンが押されてるようです。 なので、 Dim 二つ目 As Boolean For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then If 二つ目 = True Then myObj.Click Exit For End If 二つ目 = True End If End If Next に変更してみたのですが、 どうやら If myObj.alt = "ログイン" Then になるのは、1回しかないようです。 うーん、うまくできません。 ご教授よろしくお願いします。

  • vba ie操作 ボタンを押したい

    こんばんは。度々すいません。 またまたIE操作で詰んでしまいました。 以前、http://hiroba.chintai.net/qa7798169.htmlで質問してご回答いただいたのですが 違うサイトにも応用しようとしたところ、うまくいきませんでした。 https://www.jaccs.co.jp/icmclub/icm_login.htmlのログインボタンを押下したいのですが Sub test() Dim objIE As InternetExplorer Dim myObj As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.navigate "https://www.jaccs.co.jp/icmclub/icm_login.html" objIE.Visible = True Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then Debug.Print myObj.alt myObj.Click Exit For End If End If Next Set objIE = Nothing End Sub をするとエラーにもならないけどボタンも押せません。 でもmyObj.Clickは通過しているようです。 なぜボタンを押せないのでしょうか? ご教授よろしくお願いします。

  • vba ie操作 電気家計簿ログインできない

    いつもお世話になっております。 何度も質問して申し訳ございません。またまた教えてください。 電気家計簿(https://www.kakeibo.tepco.co.jp/dk/aut/login/)のログインボタンをVBAで押したいのですが うまくできません。 コードは下記の通りです。 ***************************************************************** Sub test() Dim objIE As InternetExplorer Dim myObj As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://www.kakeibo.tepco.co.jp/dk/aut/login/" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Document.all("id").Value = "test" objIE.Document.all("password").Value = "tset" 'objIE.Document.Forms(0).submit 'これだと更新されちゃうっぽい 'objIE.Document.Forms(0).Item(2).Click 'Item(0)とItem(1)はエラーにならないけど何も起こらない。Item(2)にするとエラー 'objIE.Document.all.submit.Click 'エラー 'エラーにならないけど何も起こらない 'For i = 0 To objIE.Document.Links.Length - 1 ' If objIE.Document.Links(i).innerHTML Like "*alt=ログイン*" Then ' objIE.Document.Links(i).Click ' Exit For ' End If 'Next i 'エラーにならないけど何も起こらない 'For Each myObj In objIE.Document.forms(0).all ' If TypeName(myObj) = "HTMLInputElement" Then ' If myObj.alt = "ログイン" Then ' myObj.Click ' Exit For ' End If ' End If 'Next Set objIE = Nothing End Sub ***************************************************************** 自分なりにいくつか試してみたのですが、うまくいきませんでした。 ご教授よろしくお願いします。

  • VBAでURLを指定する方法

    VBAを使用して、エクセルに記載しているテキストで開くURLを変えるプログラムを作成しようと思っております。 例えばA1に『yahoo』と入力されていれば、『http://www.yahoo.co.jp/』を開き、 『google』と入力されていれば、『http://www.google.com』を開くようにしたいです。 現在、下記のプログラムを使用していますので、 下記を流用できるようにして頂けると幸いです。 Sub test() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "『特定URL』" Do While objIE.ReadyState <> 4 Do While objIE.Busy = True Loop Loop For Each Obj In objIE.Document.getelementsbytagname("input") If Obj.Name = "mail" Then objIE.Document.getelementsbyname("mail")(0).Value = Range("C1").Value Else If Obj.Name = "password" Then objIE.Document.getelementsbyname("password")(0).Value = Range("D1").Value Else objIE.Document.Links(1).Click End If End If Next End Sub 宜しくお願いいたします。

  • エクセルVBAでのIE画面操作

    エクセルのデータを社内のイントラネットに自動入力し顧客情報画面を自動的に立ち上げるVBAコードがあります。 現在これで動いてはくれるのですが、ひとつ不便なところがあるので改善したいのです。 以下のコードは、エクセルのA列に入力された顧客番号を、エクセル上のカーソル移動により、番号入力画面(http://xxxx.yyy.co.jp/imagef/Qspec.asp) の入力欄(kokyakuNo)に自動転記します。 自動で検索をかけ、結果を別の画面(http://xxxx.yyy.co.jp/imagef/QresultVi.asp )に表示してくれます。 最初の1回は、まず番号入力画面があらわれ、次に結果が表示された別の画面(http://xxxx.yyy.co.jp/imagef/QresultVi.asp )が現れてくれます。 ところが、エクセル上でカーソルを一つ下げ、次の顧客番号を選択すると、また番号入力画面になり、検索がはじまるのですが、結果の画面が番号入力画面の後ろに隠れて表に出てきてくれません。 いちいちウィンドウズ画面の一番下のタスクバーで結果の画面をクリックしなくては表示されないのです。 これを最初の一回目は結果の画面が新しく開くので自動的に表に出るのでしょうが、2回目以降はすでに存在する画面上の表示が変わるだけなので隠れたままなのだと思います。 なんとか自動的に結果の画面を表に表示させる方法はないでしょうか?エクセル2000、Windows2000です。 ご教示ください。 Dim objIE As Object Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Dim tmp As String   If Target.Count > 1 Then Exit Sub '複数セル選択を除外   If Target.Column <> 1 Then Exit Sub 'A列以外を除外   If Target.Value = "" Then Exit Sub '空白セルを除外   On Error Resume Next   tmp = objIE.Name 'objIE.Nameの取得に成功したら起動とみなす。   If Err.Number <> 0 Then 'エラーならIEが起動していないので、起動する。     Set objIE = CreateObject("InternetExplorer.Application")   End If   On Error GoTo 0   With objIE     .navigate "http://xxxx.yyy.co.jp/imagef/Qspec.asp"     .Visible = True     Do While .busy = True '表示まで待機       DoEvents     Loop     .document.getElementById("kokyakuNo").Value = Target.Text 'テストボックスへ入力:ID属性で指定     .navigate "javascript:Submit();" 'http://xxxx.yyy.co.jp/imagef/QresultVi.asp に結果が表示される     Do While .busy = True       DoEvents     Loop   End With End Sub

  • 「地図」で検索するにはどういう操作をすればいいので

    ヤフーのトップページから 値を入れて検索を押すまではできるのですが 「ウェブ」ではなく「地図」で検索するにはどういう操作をすればいいのでしょうか? Sub yahoo() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Do While objIE.Busy = True DoEvents Loop Do While objIE.Document.ReadyState <> "complete" DoEvents Loop objIE.Document.forms(0).elements("p").Value = "東京" '‘「地図」をクリックする操作をしたい objIE.Document.forms(0).submit Set objIE = Nothing End Sub 宜しくお願いいたします。

  • VBAでWEBのリンクをクリックしたい

    取引先のWebサイトから請求書のデータを取得しようと思い、該当ページに到達すべくコードを書いてみました。 以下のコードを F8 キーでステップ実行を続けると目的を達するのですが、ボタンに割付て実行するとログイン後のページを表示した後目的のリンクをクリックできません。 状態待ちかと思い待機コードをビシバシ突っ込みましたが通常実行では目的のリンクをクリックしてくれません。 どうしたらよいでしょうか? Sub サイトオープン() Set objIE = CreateObject("InternetExplorer.Application") With objIE .Navigate "https://www2.hogehoge/Login.jsp" .Visible = True 'IE待機 Do While .Busy = True DoEvents Loop 'テストボックスへ入力 .Document.all.Item("userId").Value = Range("b1").Value .Document.all.Item("password").Value = Range("b2").Value '送信ボタンクリック .Document.forms(0).submit     '←ここまではOK    'IE待機 Application.Wait 3000 '1000分の1秒 Do While .Busy = True DoEvents Loop     ’フレーム内のリンク確認 For Each objLink In objIE.Document.frames("right").Document.Links If objLink.Href = "https://www2.hogehoge/BillList.jsp?init=false&search=???&page=Top" Then '←F8ステップ実行ではOKだが、通常処理では判定されない?      'IE待機 Do While .Busy = True DoEvents Loop  ’リンクをクリック          objLink.Click  ’←要はこれをしたい!        'IE待機      Application.Wait 3000 '1000分の1秒 Do While .Busy = True DoEvents Loop Exit For End If Next End With Set objIE = Nothing End Sub

  • 【VBA】IEのリンクを新しいタブで開く

    VBAでIEを制御しリンク(アンカー)<a href="***">を新しいタブで開くようにしたいのですが可能でしょうか? 仮にグーグルのトップページ(http://www.google.co.jp/)の『検索オプション』(http://www.google.co.jp/advanced_search?hl=ja)を新しいタブで開くとします 実際に開きたいリンクのURLは固定ではないためURLの指定では開けませんが、飛びたいリンクの文言(『検索オプション』)は固定です リンクに飛ぶ前に飛ぶ先のURLを取得する仕方か、Shift+Ctrl+クリックのようにリンクを新しいタブで開く方法を教えてください 一度普通にリンクに飛んでからURLを取得し、戻ってから新しいタブで開くぐらいしかできないのでしょうか? Sub 新しいタブで開く() Dim objIE As Object Dim objShell Dim URL As String Set objShell = CreateObject("Shell.Application") For n = objShell.Windows.Count To 1 Step -1 Set objIE = objShell.Windows(n - 1) If Right(UCase(objIE.FullName), 12) = "IEXPLORE.EXE" Then objIE.Navigate "http://www.google.co.jp/" Exit For End If Next Set objShell = Nothing objIE.Visible = True Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop For Each Obj In objIE.Document.getElementsByTagName("a") If Obj.innerText = "検索オプション" Then Obj.Click Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop URL = objIE.Document.URL objIE.GoBack Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Navigate URL, CLng(&H800) Exit For End If Next End Sub よろしくお願いいたします

  • vbaでyahooメールの受信メールの一覧を読み取

    vbaでyahooメールの受信メールの一覧を読み取る方法はありますか? Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://login.yahoo.co.jp/config/login?logout=1" 'ログアウトする Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Navigate "https://login.yahoo.co.jp/config/login?.src=&.pd=&.done=http%3A//www.yahoo.co.jp/" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Document.all.UserName.Value = "" objIE.Document.all.passwd.Value = "" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Document.Forms(0).submit Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Navigate "http://jp.mc1003.mail.yahoo.co.jp/mc/welcome?.rand=6i0loli2li7s6&noFlush&YY=940152127#_pg=showFolder&fid=Inbox&order=down&tt=84&pSize=25&.jsrand=6381767" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Debug.Print objIE.Document.Body.innerHTML Set objIE = Nothing End Sub これでログインまではできるのですが、その後のソースを読み取っても受信メールの一覧は読み取れません。 ログイン後に、vbaではなく手動でWEBクエリをやってソースに書き出してみましたがやはり受信メールだけは読み取れません。 WEBクエリならフォルダの一覧は読み取れました。 VBAで読み取るのは不可能なのでしょうか?

  • vbaie操作 新しく開いたウインドウを操作したい

    こんばんは。いつもお世話になっております。 新たに開いたウインドウをVBAでキャッチ(?)して、 オブジェクトの中に入れたいのですがやり方が分かりません。 OS:XP、オフィス2003です。 http://okwave.jp/qa/q7643293.html を参考に、 --------------------------------------------------------- Option Explicit Sub test1() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "http://www.goo.ne.jp/" objIE.Visible = True Do While objIE.Busy = True DoEvents Loop Do While objIE.Document.ReadyState <> "complete" DoEvents Loop ’安否情報確認サイト 【J-anpi】をクリックする For i = 0 To objIE.Document.Links.Length - 1 If objIE.Document.Links(i).href = "http://anpi.jp/" Then objIE.Document.Links(i).Target = "_blank" objIE.Document.Links(i).Click Exit For End If Next i objIE.Document.all("name").Value = "test" 'エラーになる Set objIE = Nothing End Sub --------------------------------------------------------- を実行した時に、 http://anpi.jp/top のページの“名前“をVBAで入れたいのですが、実行時エラー91になります。 理由は、 objIEには、http://www.goo.ne.jp/が入ってるから、 http://anpi.jp/topのページは操作できないのが原因だと思うのですが Dim objIE2 As InternetExplorer のように新たなオブジェクトを作って、 objIE2にhttp://anpi.jp/topを入れて操作するにはどうすればいいでしょうか? 最初から、 objIE.Navigate http://anpi.jp/top を開いたり、 objIE.Navigate2 http://anpi.jp/top , 2048 で新たなタブを開く方法以外でお願いします。 Debug.Print objIE.LocationURL を見ると、 http://www.goo.ne.jp/ が返ってきます。(そりゃそうか) 本当はこのサイトはサンプルで実際は、 vbaで objIE.Document.Links(i).Target = "_blank" objIE.Document.Links(i).Click をクリックした場合、 新たに開いたウインドウをVBAでテキストに文字を入れたり、ボタンを押したりの操作する方法を知りたいのです。 objIE.document.Links(i).Click このタイミングで、 objIEにhttp://anpi.jp/topがはいればいいなーって思ってます。 --------------------------------------------------------- Sub test2() Dim objIE As InternetExplorer Dim objIE2 As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") Set objIE2 = CreateObject("InternetExplorer.Application") objIE.Navigate "http://www.goo.ne.jp/" objIE.Visible = True Do While objIE.Busy = True DoEvents Loop Do While objIE.Document.ReadyState <> "complete" DoEvents Loop ’安否情報確認サイト 【J-anpi】をクリックする objIE2.Navigate "http://anpi.jp/top" objIE2.Visible = True objIE2.Document.all("name").Value = "test" 'エラーになる Set objIE = Nothing Set objIE2 = Nothing End Sub --------------------------------------------------------- これにするしかないのでしょうか? ご回答よろしくお願いします。

専門家に質問してみよう