VB6 実行時エラー -2(fffffffe)の解決方法は?

このQ&Aのポイント
  • VB6で作成したAPでエラーで出て困っております。調べても解決策が見つからず、皆様のお力をお借りしたいと思います。
  • webbrowserコントロールを利用し、GIFファイルの表示を行う処理で実行時エラー '-2(fffffffe)'が発生します。
  • エラー発生後、デバッグモードに移行すると、問題なくDoEventsを通り抜けますが、原因が特定できず悩んでいます。情報をお持ちの方がいらっしゃいましたら、ご教授ください。
回答を見る
  • ベストアンサー

VB6 実行時エラー -2(fffffffe)

VB6で作成したAPでエラーで出て困っております。 調べても解決策が見つからず、皆様のお力をお借りしたいと思います。 【環境】 Windows XP SP3 microsoft visual studio 6.0 sp6 【現象】 webbrowserコントロールを利用し、GIFファイルの表示を行う処理で以下のエラーが発生。 実行時エラー '-2(fffffffe)': オートメーション エラーです 【ソース】 Private GifLoad As Boolean -------------------------------------------------------------------------------- Private Sub GifFileLoad()   Dim Hstyl As HTMLStyle   Dim GifName As String   GifName = Gifファイルのフルパス   WebBrowser.Navigate GifName   GifLoad = False   '表示を読み込むまで待機   Do      DoEvents←ここでエラーが発生   Loop Until GifLoad   Set Hstyl = WebBrowser.Document.Body.Style   With Hstyl      .OverFlow = "hidden"       .MarginLeft = "0px"      .MarginTop = "0px"   End With   Set Hstyl = Nothing End Sub -------------------------------------------------------------------------------- Private Sub WebBrowser_DocumentComplet(ByVal pDisp As Object,URL As Variant)   GifLoad = True End Sub -------------------------------------------------------------------------------- エラー発生後、メッセージのデバッグボタンでデバッグモードに移行すると、問題なくDoEventsを通り抜けます。単純にResume Naxtを追記したらいいだけのような気もするのですが、エラーの内容、原因が特定できず悩んでいます。 この事象に対して情報をお持ちの方がおられましたら、ご教授お願いいたします。

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

  • ベストアンサー
回答No.1

自信はありませんが、なんとなく、DoEvents が多重呼び出しされて、おかしくなっているのかな、という気がします。 試しに、次の Sleep 関数を宣言しておいて、 Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) Do   DoEvents   Sleep 100 Loop Until GifLoad のようにしてみるとどうなるでしょうか? それと、 Set Hstyl = WebBrowser.Document.Body.Style With Hstyl   .OverFlow = "hidden"   .MarginLeft = "0px"   .MarginTop = "0px" End With の部分を Private Sub WebBrowser_DocumentComplet(ByVal pDisp As Object,URL As Variant) の中に入れてやれば、Do ~ Loop を使わなくて済むと思うのですが、そうしない理由がなにかあるのでしょうか?

aotama5
質問者

お礼

お礼が遅れて申し訳ありません。 とりあえず解決しました。 WebbrowserコントロールはIEの一部Dllを使用しているそうで、 試しにIEを入れなおして見た所正常に動作するようになりました。 違いを比べてみたところ、 Webbrowserコントロールの参照しているDllがshdocvw.dllからieframe.dllに変わっていました。 ちなみに、実行時エラー -2についてですが、 詳しいことはわかりませんでしたが、DoEventsでエラーが発生する度に 「実行時エラー -2」→「実行時エラー -4」→「実行時エラー -6」と値が変わっていきます。 上記の結果から、特に意味のないエラー?ではないかなと思っています。

aotama5
質問者

補足

レスありがとうございます。 WebBrowser_DocumentCompletの中で処理を行わない理由は、前後にも似たような処理を行っており、確実にGifファイルが表示されるまで待機させたいためです。 ・Sleep関数を使う方法 ご教授いただきありがとうございます。 現在、試してみたところ、エラーは出ておりません。 ただ、後付で申し訳ないのですが、常にエラーが出るわけではなく、数回~数十回に1回ほどの間隔で発生しております。 今後も注意して検証していこうと思います。 なお、引き続いて「実行時エラー -2」の情報を募集中です。 もし具体的にエラーの内容をご存知の方おられましたら、ご助力お願いします。

関連するQ&A

  • VBA:コンパイルエラー

    http://www.microsoft.com/japan/msdn/columns/office/office06012000.asp にて示されたWebクエリダイアログを作成中: 以下の 'エラー の行で 「compile error:メソッドまたはデータメンバが見つかりません」 が発生、頓挫中。 ご教授お願いします。 Dim gcolTablesOnPage(15) As String Dim gintCurrentRecord As Integer Private Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long) Private Sub CB1_Click() WebBrowser1.Navigate2 "http://quote.yahoo.co.jp/m3?u" Call Sleep(5999) MsgBox "*" Set colTables = WebBrowser1.Document.all.tags("TABLE") End Sub Private Sub CB3_Click() Dim colTables As Object Dim colCurrentTable As Object Dim intcntr As Integer With WebBrowser1 gintCurrentRecord = 0 Set colTables = .Document.all.tags("TABLE") For Each colCurrentTable In colTables Call cHTM(colCurrentTable.outerhtml, gintCurrentRecord) gintCurrentRecord = gintCurrentRecord + 1 Next colCurrentTable End With End Sub Function cHTM(x, gintCurrentRecord) Dim tempHtml As String tempHtml = gcolTablesOnPage(gintCurrentRecord) tempHtml = "<HTML><HEAD><TITLE></TITLE></HEAD><BODY>" & x & "</BODY></HTML>" End Function Private Sub CB5_Click() Dim gintCurrentRecord As Integer gintCurrentRecord = 0 If Me.gintCurrentRecord < gcolTablesOnPage.Count Then 'エラー Me.gintCurrentRecord = Me.gintCurrentRecord + 1 WebBrowser1.Navigate2 gcolTablesOnPage(Me.gintCurrentRecord) End If ge.Count End Function

  • アクセス 実行時エラー3265

    お世話になっております。 先ほどまで、違うスレで質問していたものです。 おかげさまで、Private Sub scdSelect()のようなコードとなり、 こちらの方は無事動作しましたが、それをコピーして、 Private Sub denbanSelect()を作成すると、実行時エラー3265が 発生しました。 なぜエラーが発生するのか、検討もつきません。 何かほかに前提条件があるのでしょうか? 各サブフォームのイミディエイトウインドウで ?me.parent.openargs とすると、しっかりと引数は入っております。 教えて君で申し訳ありませんが、どなたご教授よろしくお願いします。 ★呼び出し元フォーム  Private Sub cmdSeekDenban_Click()   DoCmd.OpenForm "resultJDenban", , , , , , Me.Name & ".resultViewJyutyuDenban"  End Sub  Private Sub cmdSeek_Click()   DoCmd.OpenForm "resultScd", , , , , , Me.Name & ".resultViewJyutyu"  End Sub  Public Sub resultViewJyutyu() ☆結果の表示(商品コード検索用)  end sub  Public Sub resultViewJyutyuDenban() ☆結果の表示(伝票番号検索用)  end sub ★検索画面 商品コード用 サブフォーム  Private Sub 商品コード_DblClick(Cancel As Integer)   Call scdSelect  End Sub  Private Sub scdSelect()   Dim Pos   Dim MyFrm   Dim ProcName  Pos = InStr(Me.Parent.OpenArgs, ".")  Set MyFrm = Forms(Left(Me.Parent.OpenArgs, Pos - 1))  ProcName = Right(Me.Parent.OpenArgs, Len(Me.Parent.OpenArgs) - Pos)   MyFrm.txtScd.Value = 商品コード.Value   MyFrm.txtEdaban.Value = 枝番.Value   DoCmd.Close acForm, "resultScd", acSaveNo   CallByName MyFrm, ProcName, VbMethod End Sub ★検索画面 受注伝票番号用 サブフォーム  Private Sub 商品CD_DblClick(Cancel As Integer)   Call denbanSelect  End Sub  Private Sub denbanSelect()   Dim Pos   Dim MyFrm   Dim ProcName   Pos = InStr(Me.Parent.OpenArgs, ".")  Set MyFrm = Forms(Left(Me.Parent.OpenArgs, Pos - 1))  ProcName = Right(Me.Parent.OpenArgs, Len(Me.Parent.OpenArgs) - Pos)  MyFrm.txtDenban.Value = 伝票番号.Value  CallByName MyFrm, ProcName, VbMethod   ←エラー発生★★★   DoCmd.Close acForm, "resultJDenban", acSaveNo End Sub エラー内容  実行時エラー '3265' アプリケーション定義またはオブジェクト定義エラーです。

  • VBでデバックするとエラーになる。

    VBでデバックすると下のようなエラーがでます ArgumentNullExceptionはハンドルされませんでした。 値を Null にすることはできません。 パラメーター名: activationContext VBを初めて日が浅いのでヘルプを読んでも意味が理解できませんでした。 なので、易しく回答してもらえると嬉しいです コードは下です Public Class Form1 'TextBox2に入力したURLをWebBrowser1で表示する Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click WebBrowser1.Navigate(TextBox2.Text) End Sub 'ブラウザ→戻るでWebBrowser1を処理する Private Sub 戻るToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 戻るToolStripMenuItem.Click WebBrowser1.GoBack() End Sub 'ブラウザ→進むでWebBrowser1を処理する Private Sub 進むToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 進むToolStripMenuItem.Click WebBrowser1.GoForward() End Sub 'ブラウザ→テキストボックスにURLを入力した時の処理 Private Sub ToolStripTextBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripTextBox1.Click WebBrowser1.Navigate(ToolStripTextBox1.Text) End Sub 'TextPageのタブをクリックした時のイベント Private Sub TabPage1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage1.Enter TextBox2.Visible = False Button1.Visible = False ブラウザToolStripMenuItem.Enabled = False 書式ToolStripMenuItem.Enabled = True ToolStripMenuItem1.Enabled = True End Sub 'BrowserPageのタブをクリックした時のイベント Private Sub TabPage2_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabPage2.Enter TextBox2.Visible = True Button1.Visible = True ブラウザToolStripMenuItem.Enabled = True 書式ToolStripMenuItem.Enabled = False ToolStripMenuItem1.Enabled = False End Sub Private Sub 新規ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 新規ToolStripMenuItem.Click TextBox1.Text = ("") End Sub Private Sub 開くToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 開くToolStripMenuItem.Click Dim selectButton As DialogResult Dim filename As String selectButton = OpenFileDialog1.ShowDialog() filename = OpenFileDialog1.FileName If selectButton = DialogResult.OK Then Try TextBox1.Text = _ My.Computer.FileSystem.ReadAllText(filename, System.Text.Encoding.Default) Me.Text = "Visual Text" & filename Catch ex As Exception End Try End If End Sub Private Sub 保存ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 保存ToolStripMenuItem.Click Dim selectButton As DialogResult Dim filename As String selectButton = SaveFileDialog1.ShowDialog() filename = SaveFileDialog1.FileName If selectButton = DialogResult.OK Then Try My.Computer.FileSystem.WriteAllText(filename, TextBox1.Text, False, System.Text.Encoding.Default) Me.Text = "Visual Text" & filename Catch ex As Exception End Try End If End Sub Private Sub フォントToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles フォントToolStripMenuItem.Click Dim fd As New FontDialog() fd.Font = TextBox1.Font fd.Color = TextBox1.ForeColor fd.MaxSize = 19 fd.MinSize = 8 fd.FontMustExist = True fd.AllowVerticalFonts = False fd.ShowColor = True fd.ShowEffects = True fd.FixedPitchOnly = False fd.AllowVectorFonts = True If fd.ShowDialog() <> DialogResult.Cancel Then 'TextBox1のフォントと色を変える TextBox1.Font = fd.Font TextBox1.ForeColor = fd.Color End If End Sub End Class

  • 実行時エラー '32755' [キャンセル] ボタンが選択されました。 について

    ファイルを保存する時、キャンセルをするとタイトルどおりのエラーメッセージが出ます。当方、初心者でデバッグの仕方がわからず困ってます。どなたか教えてください。 コードの一部 Dim myFile As String Private Sub Command2_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlOFNOverwritePrompt '上書き確認する CommonDialog1.ShowSave '!!!デバッグの際はこの行が反転表示されます!!! If CommonDialog1.FileName = "" Then Exit Sub myFile = CommonDialog1.FileName FileWrite Form1.Caption = "Form1" & myFile End Sub Private Sub FileWrite() Dim buf As String Open myFile For Output As #1 Print #1, RichTextBox1.Text; '最後の';'は余計な複改を入れないため Close #1 Exit Sub End Sub

  • webbrowserにフォーカスを設定したい。

    vb6のwebbrowser controlを使って、中国語の表示、記入を行うアプリを作っています。 ネットの質問箱で教えていただき、以下のとおり、webbrowser control内に、Text Boxを作りました。しかし、TextBoxにフォーカスがないため、入力のたびに、マウスをクリックしなくてはなりません。 そこで、常にテキストボックスにフォーカスがあるようにしたいのですが、このあと、どのように記述すればいいでしょうか。 ちなみに、webbrowser1.setfocusでは、何の変化も起きません。 webbrowserを使うのは初めてなので,、わかりやすく教えていただければ助かります。 Private Sub Form_Load() Dim doc1 As Object Dim body1 As Object WebBrowser1.Navigate2 "about:blank" Do While WebBrowser1.Busy DoEvents Loop On Error Resume Next Do DoEvents Set doc1 = WebBrowser1.Document Set body1 = doc1.body Loop While body1 Is Nothing On Error GoTo 0 With body1.Style .BorderStyle = "none" .margin = "0px" .overflow = "hidden" End With Set wbtext1 = doc1.CreateElement("TEXTAREA") wbText1.runtimestyle.Width = "100%" wbText1.runtimestyle.Height = "100%" body1.appendChild wbtext1 Set body1 = Nothing Set doc1 = Nothing End Sub

  • エラーがでてしまう・・・・

    お世話になります。 見よう見まねでアカウント取得プログラムを 作成してみたのですがエラーがでてうまく動作しません。 フォームに webbrowserとコマンドクリックボタン ひとつずつという簡単なプログラムなのですが・・。 エラーの内容は WebBrowser1.Document.All.mail.Value この部分が黄色くなりオブジェクトはこのプロパティをサポートしていません。。。とでます。 僕自身はじめて3週間ぐらいなんで 何が悪いのかさっぱり・・ 詳しい方教えてください。お願いします。 Private Sub Command1_Click() Dim objIE As Object 'IEオブジェクト参照用 Dim k As Integer Dim Now As Long For k = 93 To 1000 Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = False WebBrowser1.Navigate2 "http://www.tram-stopper.com/community/adult/panel.cgi?http=a&sh=sh" Do While objIE.Busy = True DoEvents WebBrowser1.Document.All.ps.Value = "ken3k" WebBrowser1.Document.All.linkurl.Value = "http://www.yahoo.co.jp/" WebBrowser1.Document.All.Id.Value = "afx" & k WebBrowser1.Document.Forms(0).Submit     Now = Timer     While Timer < Now +1   '1秒間待機する     DoEvents     Wend Next k End Sub

  • vb2005でHTMLTableとHTMLTableCellを使用するには?

    恐れ入ります。 下記のコードでエラーがでて困っています。 Dim t As HTMLTable   Dim c As HTMLTableCell の2行でエラーがでているのですが、Importsで何かを読み込んでやればエラーがでてこないのかなと思い、 HTMLTable HTMLTableCellが属してる空間のSystem.Web.UI.HtmlControlsをImportsしてみたのですがまだエラーがでます。何が原因かちょっとわかりかねます。詳しい方教えてください。よろしくお願いします。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click WebBrowser1.Navigate("任意のhtml") Do While (WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete) My.Application.DoEvents() System.Threading.Thread.Sleep(50) Loop Dim t As HTMLTable Dim c As HTMLTableCell Dim lngCno As Long, lngTno As Long For Each t In WebBrowser1.Document.All.GetElementsByName("table") lngCno = 0 For Each c In t.Cells '--> getElementsByTagName("td") lngCno = lngCno + 1 Debug.Print("【Cells(" & lngCno & ") in Tables(" _ & lngTno & ") innerHTML】") Debug.Print(c.innerHTML) Next c lngTno = lngTno + 1 Next t End Sub End Class

  • 実行中のマクロを中断したい

    過日、「マクロの中断」について質問し適切な回答をいただき無事解決したものです。 ところが、初心者の悲しさ、少し変わると全く応用がききません。 Range("A1:B10")を読み上げている途中で中断したいのです。前回ご教示いただいたところにより 「DoEvents」や「Me.Repaint」「Sleep」などをあちこち挿入してみましたがうまくいきません。理屈、理論を理解できていないので仕方ないのでしょうがよろしかったら又ご指導のほどお願いします。Excel2003です。 Dim c As Range Dim CancelFlg As Integer Private Sub CommandButton1_Click() Range("A1:B10").Select CancelFlg = 0 For Each c In Selection   ’ DoEvents Application.Speech.Speak c.Value  ’ DoEvents If CancelFlg = 1 Then Exit For  ’ DoEvents Next c Range("A1").Select End Sub Private Sub CommandButton2_Click() CancelFlg = 1 End Sub 前回のご教示いただいたもの Private Sub CommandButton1_Click() Dim i As Integer CancelFlg = 0 For i = 1 To 100 DoEvents ActiveCell.Value = 1 ActiveCell.Offset(1, 0).Activate Application.Wait (Now + TimeValue("0:0:01")) If CancelFlg = 1 Then Exit For Next i End Sub Private Sub CommandButton2_Click() CancelFlg = 1 End Sub

  • 実行時エラー'13' :型が一致しません。

    Windows XPで、Access 2002を使用しています。 テーブル1のフィールド1の値を、ハイフン区切りで分割をしたいと思い、split関数を使用して、 下記、VBAを実行しましたが、「実行時エラー'13' :型が一致しません。」と言うエラーが 発生して、先に進む事ができません。 ツール→参照設定で、Microsoft DAO 3.6 Object Libraryにチェックを入れたり外したりしましたが、 全く改善されず、同じエラーが発生します。 DAO.を付けると解決するとの事で、 Dim dbs As DAO.Database Dim rs As DAO.Connection としましても、同じエラーが出ます。 デバッグしますと、 Set rs = dbs.OpenRecordset("select フィールド1 from テーブル1") の所で発生しているようです。 Private Sub コマンド0_Click() Dim dbs As DAO.Database Dim rs As DAO.Connection Set dbs = CurrentDb Set rs = dbs.OpenRecordset("select フィールド1 from テーブル1") Dim Vartemp As Variant Vartemp = Split(rs, "-") Debug.Print Vartemp(0) Debug.Print Vartemp(1) Debug.Print Vartemp(2) Debug.Print Vartemp(3) End Sub 以上、初心者で、行き詰ってしまっておりますので、どうか宜しくお願いします。

  • VBAの実行時エラー'2522'について

    前任者がAccess2003により作成したデータベースがあります。 CSVデータを取り込む仕組みがあるのですが、下記のエラーが出て困っています。 実行時エラー '2522': このアクションまたはメソッドを実行するには[File Name/ファイル名]引数が必要です。 どうやらVBAによるエラーだと判明しましたが、それ以上はよくわかりません。 以下のような構文になっています。 Option Compare Database ---------- Private Sub CSV取込_Click() TextConv strFileName, "マスター定義", "T_マスター" End Sub ---------- Sub TextConv(strFle, strInp, strTbl) Dim strSQL As String strSQL = "DELETE * FROM " & strTbl If MsgBox("テーブルデータを更新しますか?", 4, "テーブル更新") = vbYes Then CurrentProject.Connection.Execute strSQL DoCmd.TransferText acImportDelim, strInp, strTbl, strFle, True MsgBox "テーブルデータを更新しました" End If End Sub ---------- Private Sub 参照_Click() Dim strFileName As String strFileName = GetFileName() If Len(strFileName) > 0 Then Me.filepath = strFileName Else MsgBox "取込対象ファイルを選択してください! " End If End Sub 以上のようになっています。 デバッグを実行すると「strFle」の値がEmptyになっているのでここだとは思うのですが、どうしたらよいかわかりません。 どなたかお知恵をお貸し願えませんでしょうか。 宜しくお願いします。

専門家に質問してみよう