Skip to main content
Participating Frequently
April 6, 2023
Answered

フォルダ内のPDFに対し同じ処理の繰り返し中のエラーについてacrobat standard 2020

  • April 6, 2023
  • 1 reply
  • 4036 views

アクロバットアプリの機能を用いて以下のようなツールをExcel VBAにて作成しているのですが、特定のメソッドにてエラーが

発生し、原因も特定することができず困っております。

エラーの回避方法などございましたら、ご助言をいただけますと幸いです。

 

●環境

使用アプリ Adobe Acrobat Standard 2020

バージョン 2020.005.30441

参照設定:Adobe Acrobat  10.0 Type Library

Excelバージョン:2019

 

900個程度のPDFファイルがあり、全てのPDFファイルに対し、以下の処理を繰り返す仕様です。

AVDoc(AcroExch.AVDo)メンバのOpenメソッドにてPDFファイルを開く

GetISObjectメソッドでJavaScriptオブジェクトを作成する

JavaScriptオブジェクトをxmlで保存する

PDFファイルをAVDoc(AcroExch.AVDo)メンバのCloseメソッドにて閉じる

 

失敗するメソッドは実行によりまちまちで、①、②、④のメソッドのエラーは確認できております。

 

 

●エラー内容

実行時エラー        462:リモートサーバがないか、使用できる状態ではありません。

実行時エラー-2147023170:オートメーションエラーです。リモートプロシージャコールに失敗しました。

 

AVDoc(AcroExch.AVDo)メンバのOpenメソッド

①上記のメソッドを使用後は、AVDoc(AcroExch.AVDo)メンバのCloseメソッドを使用しないと、1回目開いたPDFを処理し続けるのですが、それは仕様でしょうか。

②連続で複数のファイルを処理する場合、Openメソッドで生成したオブジェクトは一度Closeで必ず閉じなければならない仕様なのでしょうか。

Openメソッドで開いたファイルはShowメソッドで表示した場合のみ画面表示されるのですが、こちらは仕様でしょうか。

 

 

AVDoc(AcroExch.AVDo)メンバのCloseメソッド

AVDoc(AcroExch.AVDo)メンバのOpenメソッドにて画面表示をせずオブジェクト生成のみ行った後、

上記のメソッドを使用した場合オブジェクトは破棄され、バックグラウンドプロセスで起動されていた

アクロバットアプリごと終了してしまい、次のOpenメソッドでエラーが発生してしまうのですが、それは仕様なのでしょうか。

AVDoc(AcroExch.AVDo)メンバのOpenメソッドにて画面表示を行った後上記のメソッドを使用した場合も

オブジェクトは破棄され、アクロバットアプリを全て終了してしまうことがあるのですが、それは仕様なのでしょうか。

③上記メソッドが他のメソッド実行中に割り込むことなどはございますでしょうか。

 

Closeのメソッド後、凡そ2~4秒後にアクロバットアプリごと終了しエラーになってしまいます。

 

 

こちらで原因として考えられるのが、以下になります。

①クローズのメソッドは実行されるまでタイムラグがあり、次のループの処理をしている間に前ループのクローズ処理が割り込み実行をし、

エラーを引き起こしている。

②クローズのメソッドが、アクロバットアプリを全て終了、オブジェクトの破棄をしてしまっている。

 

 

複数のPDFファイルを繰り返し処理する場合、どのように処理を行えば、上記のようなエラーは回避できますのでしょうか。

This topic has been closed for replies.
Correct answer Quick Timer

Quick Timer様

 

貴重なご知見をお寄せいただきありがとうございます。

また、記載先もご丁寧にご提示いただき、誠にありがとうございます。

 

ご助言いただいた通りにSleepの処理を入れたところ、当エラーの発生頻度は減少しました。

しかし500ms程度のWaitを入れておりますが、依然としてエラーが高頻度で発生いたします。

 

無知な質問で恐縮ですが、ご指摘いただいた「処理が早すぎるため保存やオープンが追い付かない」という現象は

アクロバット関係の操作においてよく発生するものなのでしょうか。

また、回避方法は待ち操作を入れる方法以外で何かございますでしょうか。

 

もし上記について何かご存知であれば、何かご教示いただけると大変幸いです。


AcrobatってOmachiさんも触れていますが、基本構造が古いんです…笑
>アクロバット関係の操作において
Interapplication Communication
主にWindowsからの利用を想定したOLE
MacOSからの利用出来るAppleEvent両方とも
アプリケーションとOS側の『やりとり』を仲介しているわけですが
この『やりとり』が、最近の小慣れたアプリケーション等に比べると
Acrobatバージョン10以前よりはマシになったとは言え
Acrobatはちょっと遅い感じがします(個人の見解です)…
365製品等と違いAdobeのAiやPDFは『フォント』の処理が絡むので
特に『書類の保存』に時間がかかる傾向が強いかなぁ(個人の見解です…笑)

私はMacな人なのでAppleEventですが
Acrobat的には『終わったよ』って言ってるけど
処理はまだおわってないなんて事があったりして…
(まぁ私の処理方法が悪いのもあるんでしょうけれども…)
AppleScriptだと普通に1秒まったりするもん…爆笑

例えば、AppleScriptでA4サイズ22kbの14ページのPDFを
openコマンドで開くと
PDFは瞬時に開いてアプリケーション上には表示されるけれど
処理としては終わらずに、処理が終了を返すのに5秒ぐらいかかるので
次の処理はその間実行されずに、ただ待っている…苦笑

一方JavascriptAPIから同じファイルを
app.openDocでファイルを開くと
1秒かからずに処理が終わる…ので次の処理に行ける
こんなこともあるんですわ

>待ち操作を入れる方法以外
一般的には
元になるPDFはできるだけ『フォントの種類』を少なく とかなのかなぁ

私はMacな人でしてVB最後に触ったのWindows7時代なので…汗
アドバイス的なことはできないけど(無責任な感じになっちゃうしね…汗)
仕様をザーット斜め読みすると
https://opensource.adobe.com/dc-acrobat-sdk-docs/library/interapp/IAC_API_OLE_Objects.html#acroexch-avdoc
先のOPENの値のところにも記載があったけど
再利用する値やオブジェクトは明示的に解放したり
使い終わったら0だったりnullだったり入れたりするのが
良いような…感じがする(根拠は無い…笑)なぁ

先に書いたように、『時間がかかっていそうな処理』だけ
JavascriptAPIに処理させる(可能なら)ってのもアリかもしれません。

参考まで

1 reply

Omachi
Legend
April 6, 2023

全然回答ではないです。ちょっと疑問に思ったので。

 

参照設定:Adobe Acrobat  10.0 Type Library

「Acrobat 10.0 Type Library」ということはAcrobat X付属のものを使用していることになります。ということはAcrobat Xを動作させようとしてしていることになりますので、インストールされていなければオートメーションエラーやリモートサーバーのエラーが出るのは当然ということになります。

Acrobat 2020用のタイプライブラリがインストールされているはずなので(私の環境にはないのでタイプライブラリ名が分かりません)そちらを参照設定するだけで解消されたりしないですかねえ。

 

Quick Timer
Inspiring
April 6, 2023

Open Closeについては仕様に記載があります
https://opensource.adobe.com/dc-acrobat-sdk-docs/library/interapp/IAC_API_OLE_Objects.html

私はMacな人なのでアレですが
エラーがマチマチなのは、処理がはやすぎて
保存やファイルのオープンがおっつないからでは?と思ったりして
ファイルのオープンを待たせる
とか
保存が終わるまで待つとか入れると良い『かも』です。

参考まで

Participating Frequently
April 7, 2023

Quick Timer様

 

貴重なご知見をお寄せいただきありがとうございます。

また、記載先もご丁寧にご提示いただき、誠にありがとうございます。

 

ご助言いただいた通りにSleepの処理を入れたところ、当エラーの発生頻度は減少しました。

しかし500ms程度のWaitを入れておりますが、依然としてエラーが高頻度で発生いたします。

 

無知な質問で恐縮ですが、ご指摘いただいた「処理が早すぎるため保存やオープンが追い付かない」という現象は

アクロバット関係の操作においてよく発生するものなのでしょうか。

また、回避方法は待ち操作を入れる方法以外で何かございますでしょうか。

 

もし上記について何かご存知であれば、何かご教示いただけると大変幸いです。