AFormAut特有のVBA実行エラー

TOP > AFormAut > *


Full Service for Takuma

概要

AFormAutオブジェクト特有のVBAでの実行エラーが有ります。そのエラーが発生するタイミングとその対策について紹介します。

エラーの詳細

一つ前の「objAcroAVDoc.Open(sFilePathIn,"")」では正常にPDFファイルがオープンできているにも関わらず、次の「objAFormApp.Fields」の行で「文章が開いてない」という実行時エラーが発生します。

このエラーは動作環境(Windows、Acrobat、MS Excel)により変わります。開発環境ではエラーにならなくても作業環境ではエラーになる事が十分に予想されます。これ以降は発生する環境と言う前提で話を勧めます。

このエラー以外のエラーも発生します。AFormAutオブジェクトは一番実行時エラーが多いオブジェクトです。

この情報は他のネット上で見かけことは無く、また公式サイト上にも見当たりません。全て当サイト上だけの内容です。(※日頃の行い?)

動作確認の環境

  1. 正常、エラーにならない
    • Windows 11 Pro 64bit
    • Acrobat XI Pro
    • Microsoft Excel 2021 - VBA
  2. 実行時エラー
    • Windows 10 Pro 64bit
    • Acrobat XI Pro
    • Microsoft Excel 2007 - VBA
  3. 実行時エラー
    • Windows XP
    • Acrobat X Pro
    • Microsoft Excel 2003 - VBA

エラーを発生させないロジック

行番号は説明の為に表示しています。

001 Option Explicit 002 003 Sub Main() 004 005 Dim bRet As Boolean 006 Dim objAcroApp As New Acrobat.AcroApp 007 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 008 Dim objAFormApp As New AFORMAUTLib.AFormApp 009 Dim objAFormFields As AFORMAUTLib.Fields 010 011 objAcroApp.CloseAllDocs 012 objAcroApp.Hide 013 014 bRet = objAcroAVDoc.Open("D:\work\Test01.pdf", "") 015 Set objAFormFields = objAFormApp.Fields 016 017 ・・・<PDFの処理ロジック>・・・ 018 019 objAcroApp.CloseAllDocs 020 objAcroApp.Hide 021 objAcroApp.Exit 022 'オブジェクトの強制開放 023 Set objAFormFields = Nothing 024 Set objAFormApp = Nothing 025 Set objAcroAVDoc = Nothing 026 Set objAcroApp = Nothing 027 'ここでメモリ上から消える。 028 End Sub

  

8行目の「AFORMAUTLib.AFormApp」の前に「New」を付けて下さい。上記のサンプルには無いですが、その後に「Set objAFormApp = CreateObject("AFormAut.App")」が有れば、削除して下さい。そこで以下のエラーが発生する事が有ります。

実行時エラー'-2147221164(80040154)':
クラスが登録されてません。

上記のエラーは稀ですが発生します。当サイトの古いサンプルにはNewは付いてませんが以下の様に修正して下さい。

Newを付ければ Set objAFormApp = CreateObject("AFormAut.App")はいらない。。

14行目のPDFオープン「objAcroAVDoc.Open」は正常終了です。しかし、15行目の「Set objAFormFields = objAFormApp.Fields」を実行した時に以下のVBAランタイムエラー(実行エラー)が発生する事が有ります。

実行時エラー'-2147220991 (80040201)':
現在 Acrobat で文書が開いていません。

上記を防ぐのが11と12行目のロジックです。

011 objAcroApp.CloseAllDocs 012 objAcroApp.Hide

偶然見つけたやり方です。詳細な理由は判りません。 objAcroApp 変数(オブジェクト)を使うと何かが変わり、エラーが出なくなります。一度使えば、この後で15行目を何度使ってもエラーは出なくなります。

備考

  • 当サイト管理者の経験上からの検証結果です。メーカー公式の情報ではありません。

戻る



これ以降はサイト管理者が当サイト又は当ページを維持&管理するためのメモです。見る必要も無く公開用にも書いてません。

Windows XP+MS Excel 2003環境下ならば確実にエラーが発生するかと思ったが・・・。Windows XPの再起動を行ったら、エラーが出なくなった。最初は確実に出たのに、どうして?!

VBAを長く使い続けるとVBA環境に不具合が出て上記でエラーになるのではないか?とも予測している。注:MS Excel 2003のVBA

しかし、もっと困ったことは以下の5年前の画像だ。見ると、「CloseAllDocs」と「Hide」が後ろに隠れて入っている。にも関わらず実行エラーが発生している。PDFオープン「objAcroAVDoc.Open」も入っている。なのにエラー?なんでやねん!F8ステップ実行で「CloseAllDocs」と「Hide」を強制スキップさせて出したエラーなのか、は不明。

現在 Acrobat で文書が開いていません。

元の記事は5年前の内容で、ココまでの詳細は覚えてない。PC内には過去資料は全て残っているが見てもこの部分の説明?は見当たらない。(汗

MS Excel 2003のファイル形式(Excel 97-2003 ブック用)内部の問題か?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA



SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください