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

エラーの詳細
一つ前の「objAcroAVDoc.Open(sFilePathIn,"")」では正常にPDFファイルがオープンできているにも関わらず、次の「objAFormApp.Fields」の行で「文章が開いてない」という実行時エラーが発生します。
このエラーは動作環境(Windows、Acrobat、MS Excel)により変わります。開発環境ではエラーにならなくても作業環境ではエラーになる事が十分に予想されます。これ以降は発生する環境と言う前提で話を勧めます。
このエラー以外のエラーも発生します。AFormAutオブジェクトは一番実行時エラーが多いオブジェクトです。
この情報は他のネット上で見かけことは無く、また公式サイト上にも見当たりません。全て当サイト上だけの内容です。(※日頃の行い?)
動作確認の環境
- 正常、エラーにならない
- Windows 11 Pro 64bit
- Acrobat XI Pro
- Microsoft Excel 2021 - VBA
- 実行時エラー
- Windows 10 Pro 64bit
- Acrobat XI Pro
- Microsoft Excel 2007 - VBA
- 実行時エラー
- 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")」が有れば、削除して下さい。そこで以下のエラーが発生する事が有ります。

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

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

現在 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」を強制スキップさせて出したエラーなのか、は不明。

元の記事は5年前の内容で、ココまでの詳細は覚えてない。PC内には過去資料は全て残っているが見てもこの部分の説明?は見当たらない。(汗
MS Excel 2003のファイル形式(Excel 97-2003 ブック用)内部の問題か?