オブジェクト変数またはWithブロック変数が設定されていません

このQ&Aのポイント
  • Webページからコピー&ペーストした情報を抜き出すプログラムで、2ページ目でエラーが発生しています。解決策を教えてください。
  • エラー'91'が発生しており、オブジェクト変数またはWithブロック変数が設定されていないというメッセージが表示されます。
  • コードの該当する行は「objIE.Navigate url」です。
回答を見る
  • ベストアンサー

オブジェクト変数またはWithブロック変数が設定されていません

はじめまして質問させていただきます。 Webページからコピー&ペーストしたものを必要な情報だけ 抜き出すものを作成中です。 1ページ目は成功していますが 2ページ目の objIE.Navigate url の行で 実行時エラー'91' オブジェクト変数またはwithブロック変数が設定されていません。とでてしまします。 解決策をご教授お願いします。 Dim objIE As Object Dim url As String Dim tai As String Dim aku As String Dim uot As String Dim i As Integer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True x = 1 For i = 1 To 20 url = Worksheets("データ").Range("E" & i) objIE.Navigate url Do If objIE.Busy = False And objIE.readyState = 4 Then Exit Do Loop objIE.ExecWB 17, 0 objIE.ExecWB 12, 0 Sheets.Add ActiveSheet.Name = "1" Range("A1").Select ActiveSheet.PasteSpecial Format:="テキスト" objIE.Quit: Set objIE = Nothing tai = Worksheets("1").Range("A13") aku = Worksheets("1").Range("A63") uot = Worksheets("1").Range("A64") Worksheets("データ").Select Range("A" & i) = tai Range("B" & i) = aku Range("C" & i) = uot Application.DisplayAlerts = False Worksheets("1").Delete Application.DisplayAlerts = True Next i

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

> Set objIE = Nothing これが何を意味するかが解れば解決かも。

hhnaruto
質問者

お礼

解放ですね。 忘れてました。ありがとうございます。

関連するQ&A

  • WEB画面をエクセルのセルに貼り付けるマクロ

    過去の回答を参考にエクセルでWEB画面をすべて選択しエクセルの所定のセルに貼り付けするマクロを作成しました。処理を追加していった結果、下記のようなマクロが完成しました。ステップインで動作確認できましたが、マクロ実行から動かすと途中で止まります。 止まる箇所は、 While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True DoEvents Wend DoEvents この記述でWEBが遅く開く時に対応するよう作成しましたが、ここで止まります。(抜け出せません) また、この記述を削るとステップインではうまく動きますが、マクロの実行から動かすと何回目かで objIE.ExecWB 17, 0 すべて選択するときに止まります。 どこが悪いのか教えていただけないでしょうか? 使用、作成したのは、excel2007 及びexcel2010です。どちらでも動きません。 よろしくお願い致します。 Sub test() Dim URL As String Dim URL2 As String Dim URL3 As String Dim CD As String Dim i As Integer For i = 1 To 199 CD = Worksheets("CD").Cells(i + 1, 1).Value URL2 = "貼り付けたいWEBのURL" URL3 = CD ’縦一列にコードを入力しているシート URL = URL2 & URL3 Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.navigate URL While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True DoEvents Wend DoEvents objIE.ExecWB 17, 0 objIE.ExecWB 12, 0 Sheets.Add ActiveSheet.Name = 199 - i Range("A1").Select ActiveSheet.PasteSpecial Format:="HTML" objIE.Quit Set objIE = Nothing Next End Sub よろしくお願いいたします。

  • エラー91 オブジェクト変数またはブロック変数が設定されてません

    こんにちは、VBであるホームページにアクセスして自動的にソースから内容を取得するプログラムを作成しているのですが、エラー91(オブジェクト変数またはブロック変数が設定されていません)が出て困っています。 しかも、同じ処理内容なのに、時間によってエラーが出るときと出ないときがあり、困っています。コード(一部)は、以下のようになっています。 Dim objIE As Object Dim a As String Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "サイトのURL" Do While objIE.Busy = True DoEvents Loop On Error GoTo Error2 a = objIE.Document.body.innerHTML ……(1) On Error GoTo 0 (1)のところで、8回に1回くらいの割合で止まります。[デバッグ]を押してすぐにまた再生ボタンを押すと、実行できます。そこで質問なのですが、 (1) エラーの原因は何でしょうか? objIEの中味が読み込み途中(IEなので処理時間がかかる)なのに参照しようとしてるからでしょうか?(でもちゃんとBusyプロパティで…) (2) Busyプロパティは「重要なページを読み込んでいる」というプロパティということですが、そのURLの全ての情報を読み込んだかどうか、というようなプロパティはないのでしょうか? (3) On Errorが通用しません。On Errorでジャンプ先を指定しているのに、Error:の箇所にジャンプしないことが2回に1回くらいあります。なぜでしょうか。 よくある質問かと思いますが、調べてもよくわかりません。ひとつでも分かりましたら、ぜひ教えてください。よろしくお願いします。

  • EXCEL VBAで URLの内容 が取得できない

    EXCEL VBA で VBAサンプルを参考にして、下記により、URLの内容を得ようとしていますが、できません。 どうも、URL画面の中に インプット用の記述があると、できなくなるのでは、と推測していますが、できるケースもあるようです。解決方法があるようでしたら、教えていただけますでしょうか? (Win7 64B EXCEL2010 IE11です。)' Sub URL取得TEST() On Error GoTo Er1 Dim StrUrl As String StrUrl = InputBox("URLを指定", "URL入力", "http://www3.nhk.or.jp/nhkworld/") ' これは 読み込めます StrUrl = InputBox("URLを指定", "URL入力", "http://uwl.weblio.jp/") ' これが読み込めません Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.FullScreen = False objIE.Top = 200 objIE.Left = 100 objIE.Width = 800 objIE.Height = 600 objIE.navigate StrUrl While (objIE.readyState <> 3 And objIE.readyState <> 4) Or objIE.busy = True DoEvents Wend DoEvents Workbooks.Add objIE.ExecWB 17, 0 objIE.ExecWB 12, 0 Sheets.Add ActiveSheet.name = "Format テキスト" Range("A1").Select ActiveSheet.PasteSpecial Format:="テキスト" objIE.ExecWB 17, 0 objIE.ExecWB 12, 0 Sheets.Add ActiveSheet.name = "FormatHTML" Range("A1").Select ActiveSheet.PasteSpecial Format:="HTML" '別のURLでテキストOKでこれはだめというケースあり ' objIE.Quit Set objIE = Nothing Exit Sub ' Er1: objIE.Quit Set objIE = Nothing End Sub

  • オブジェクト変数または With ブロック変数が設定されていません。

    下記の様に組みましたが、下記の★印の所で止まる様な事があります。 毎回止まるわけではないのですが、止まる時に「オブジェクト変数または With ブロック変数が設定されていません。」と表示されますが、 原因は何か?どの様にすればいいのか?など詳しく教えてください。 よろしくお願いします。 Sub test() Dim objIE As Object Dim strCOMMENT As String Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://" While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'データをセットする 'htmlドキュメント フォーム(0番目) アイテムに転記(代入)する objIE.Document.forms(0).Item("username").Value = "11111" objIE.Document.forms(0).Item("password").Value = "11111" While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.all.subm.Click While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop For Each link In objIE.Document.Links If link.href = "http://" Then link.Click End If Next While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'タイトル・コメントの読み込み strtitle = Sheets("sheet1").Range("k7") strCOMMENT = Sheets("sheet1").Range("k9") Application.WindowState = xlMinimized While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.forms(0).Item("title").Value = strtitle objIE.Document.forms(0).Item("comment").Value = strCOMMENT While objIE.readystate <> 4 While objIE.busy = True DoEvents ' Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Document.all.submit.Click While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop 'フォーム(0番目)を .Submit(確認) する objIE.Document.forms(0).getElementsByTagName("input")(11).Click '←★この部分で止まる時があります。 While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 6, Now()) Do While Now() < Wait_Time DoEvents Loop For Each link In objIE.Document.Links If link.href = "http://" Then link.Click End If Next While objIE.readystate <> 4 While objIE.busy = True DoEvents Wend Wend Wait_Time = DateAdd("s", 7, Now()) Do While Now() < Wait_Time DoEvents Loop objIE.Quit '.Quitで閉じる End Sub

  • IE制御でコピーをしたいのだけれど

    うまくいきません ログイン後の最初のページはコピーすることができるのですが フレームを指定して objDOC.Links(18).Click としてページを進めた先がコピーできません いかに全文を載せます。自分でいろいろやってみたのですが ちょっとわかりません。教えてください! Sub 確認()   Dim objIE As InternetExplorer Dim strUserName, strPassword As String Dim Code, Suryo, Kakaku As Long strUserName = Range("AA1").Value strPassword = Range("AA2").Value Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True   'ログイン画面---------------- objIE.Navigate "https://www2…………   IE_Complete objIE objIE.Document.all.req_userId.Value = strUserName         objIE.Document.all.req_password.Value = strPassword   objIE.Document.all.LoginSubmit.Click IE_Complete objIE 'ログイン画面ここまで Dim objFRAME As FramesCollection    Set objFRAME = objIE.Document.frames    Debug.Print "フレームの数は" & objFRAME.Length    Dim objDOC As HTMLDocument    Set objDOC = objFRAME(0).Document    Set objDOC = objFRAME(0).Document        objDOC.Links(18).Click objIE.ExecWB 17, 0 objIE.ExecWB 12, 0 Sheets("コピー").Select    Cells.Select Selection.Delete Shift:=xlUp  Range("A1").Select  ActiveSheet.PasteSpecial Format:="HTML" objIE.Quit End Sub

  • HPのtextデータをEXCELにコピーしたい

    HPをまるごとコピーしてEXCELのシートに貼り付けるマクロを作りました。 objIE.ExecWB 17, 0 objIE.ExecWB 12, 0 objIE.Quit Worksheets("Sheet1").Select Range("A5:A5500").Clear Range("A5").Select Application.Wait Now() + TimeValue("00:00:05") ActiveSheet.Paste Set objIE = Nothing ですがこれだとハイパーリンクなどもコピーしてしまい使いづらいのでtextデータだけをコピーしたいと思います。 objIE.Document.Body.InnerText ググってみた結果、これを使うとできそうな気がするのですがここから先がわかりません。 よろしくお願いします。

  • オブジェクト??

    またまた困っております inputboxで入力した日付を検索して複数選択しようとしたのですが unionの使い方がよくわかりません(・・;) どこが間違っているのかもしくは何が足りないのか教えてください<m(__)m> どうかよろしくお願いします! Option Explicit Sub グラフ() Const SH_NAME As String = "VBA" Dim art As String Dim i Dim ws As Worksheet Dim endrow As Long Dim msg As String Dim writerow As Integer Dim grahu As Chart Dim target As Range Set ws = ThisWorkbook.Worksheets(SH_NAME) writerow = 2 art = InputBox("日付を入力してください") With ws endrow = .Cells(Rows.Count, 2).End(xlUp).Row For i = 2 To endrow If art = .Range("A" & i) Then Set target = Union(target, "D" & i) Else If InStr(msg, .Range("A" & i)) = 0 Then msg = msg & .Range("A" & i) & vbCrLf End If End If Next i target.Select End With If msg <> "" Then MsgBox msg End If MsgBox "グラフベースを作成しました" End Sub Set target = Union(target, "D" & i) ↑ここでエラーが起きて 「オブジェクトが必要です」と言われました どうすればよいのでしょうか?

  • サイトのページの全体をコピーしてエクセルに貼り付け

    サイトのページの全体をコピーしてエクセルに貼り付けたいのですが http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1341770528 を参考にしたのですが Sub test() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.goo.ne.jp/" While objIE.ReadyState <> 4 DoEvents Wend objIE.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT '17,0 objIE.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT '12 DoEvents Workbooks.Add DoEvents Range("A1").Select ActiveSheet.PasteSpecial Format:="テキスト", Link:=False, DisplayAsIcon:=False End Sub をしたのですが、うまくコピーできていません。 一番最後にコピーした文字がセルに張りついてしまいます。 なぜでしょうか?

  • マクロ オブジェクト変数Withブロック変数エラ-

    以前、こちらでインターネット上の窓にエクセルの数値を自動で入れたいと言う質問をさせて頂きました。http://okwave.jp/qa/q7676012.html VBAを利用したらどうかと教えていただき、マクロをその後、勉強し動いて感動しました。 クロネコの宅急便サイトで応用しようと試みたのですが、「オブジェクト変数またはWithブロック変数が設定されてません。」とエラーが出ます。 同じ仕組みだと思うのですが何がいけないんでしょうか? Dim myWindow As Object Dim myUrl As String myUrl = "http://toi.kuronekoyamato.co.jp/cgi-bin/tneko?init For Each myWindow In CreateObject("Shell.Application").Windows With myWindow If .LocationURL = myUrl Then .document.getElementById("text1").value = Range("A1").value .document.getElementById("text2").value = Range("A2").value .document.getElementById("text3").value = Range("A3").value .document.getElementById("text4").value = Range("A4").value .document.getElementById("text5").value = Range("A5").value Exit For End If End With Next myWindow

  • VBA 同じ場所に保存する

    部署ごとに分割し、ブックで保存するコードです。 保存場所がデスクトップになっています。 これを同じ場所に保存する方法をお知らせください。 よろしくお願いします。 Sub macro1() Dim w As Worksheet Dim n As Long Dim r As Long Dim s As String Dim WSH As Variant Dim myPath As String Set w = ActiveSheet n = Worksheets.Count Application.ScreenUpdating = False On Error GoTo errhandle For r = 2 To w.Range("A65536").End(xlUp).Row s = w.Cells(r, "A") w.Rows(r).Copy Worksheets(s).Range("A65536").End(xlUp).Offset(1) Next r On Error GoTo 0 Set WSH = CreateObject("Wscript.Shell") myPath = WSH.specialfolders("Desktop") & "\" For r = Worksheets.Count To n + 1 Step -1 Worksheets(Worksheets.Count).Copy ActiveSheet.Columns.AutoFit ActiveWorkbook.SaveAs Filename:=myPath & ActiveSheet.Name ActiveWorkbook.Close False Application.DisplayAlerts = False Worksheets(Worksheets.Count).Delete Application.DisplayAlerts = True Next r w.Select Exit Sub errhandle: Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = s w.Rows(1).Copy Range("A1") Resume Application.ScreenUpdating = True End Sub

専門家に質問してみよう