管理人

nori (サイト管理人)・フリーの便利屋エンジニア
・元、下手くそなテクニカルライター
・Acrobat(PDF)の専門家では無い
・兵庫県神戸市の山奥に生息
・外食場所:すき屋、回転寿司
・お酒:好きだが、あまり飲めない
・好きな場所:回転すし
・好きな事:不真面目なことを真面目にやる
・苦手なモノ:女性。※特に妻!(怖
・好きな生物:子供

 

ある仕事がきっかけで、Acrobatの電子文書フォーマット「PDF」に興味が持ったので、このサイトを立ち上げました。もっとプログラミング的な発想でPDFを扱えないかと。そこで注目したのが10年以上も前からあるWindowsのOLE機能を利用したAcrobatのプログラミング・コントロールです。10年以上も前はパソコンのCPU能力が非力だったので注目されませんでした。今はパソコン全体の能力が上がったので有効な手段となりました。しかし、過去の批判的な評価はぬぐえず、今もあまり見向きがされません。

Adobe社もその為か、このOLE機能(Adobe社は「IAC」と表現)に対してあまり親切な情報提供(=SDK)がされていません。また機能アップをこの数年していません。このサイトはそのSDKを元にAcrobatが持っているOLE(IAC)機能を調査&補足説明しています。説明内容は独断と偏見が非常に多数入り混じっています。SDKの説明を無視した様な内容にもなっています。 よって↓





注意:当サイトの情報に関して当サイト管理者は一切の責任と義務を負いません。当サイトの情報によって生ずるいかなる障害等を当サイトは保証しません。その前提でご覧下さい。(=自分でテストして判断して下さい。)

なお、文章は苦手で、時間も余り無いので、雑な所も結構多くあります。そこのところはご勘弁下さい。ヒントや助言、そして解決先URL等をコメントで頂けると非常~に助かります。
当サイトは内容的には半分程度しか出来てないと思っています。これからは見やすく判りやすい方向で追加、更新をして行きたいと思っています。但し、時間と体力(と銭)があれば。(汗

<追加事項>
仕事を探しています。
体力も知能も非力ですが、まじめです。
情報があれば、ココまで↓。m(_ _)m
***.nnn@gmail.com

 

 

I have to publish the site system computer technology. I have updated and added to the still.

I make a website dedicated to only one in the world. It is limited to the commentary in Japanese.
I also want to add English commentary. I do not have English language proficiency. I have limited time to study.
I hope someone to support English.

 

[更新:2012/10/17]

「管理人」への17件のフィードバック

  1. 管理人さん
    初めてメールさせて頂きます。
    Acrobat STD Xのサポート中止に伴い、最新版のAcrobat STD DCにアップグレードしたところ、下記にて(VBA)、「実行時エラー'430":クラスはオートメーションまたは予測したインターフェースをサポートしていません。」と表示され、止まってしまいました。
    lRet = objAcroPDDoc.Open(タイトル名)
    ※タイトル名には、pdfファイルがフルパスにて指定されています。
    ※Acrobat STD X以前では、全く問題なく動作していました。
    お心当たりがあればご教授賜りたく、宜しくお願い申し上げます。

  2. 新人 さん
    はじめまして。
    Acrobat STD DC 環境が無いので どうしましょうね・・; 。

    >・・Acrobat STD DCにアップグレードしたところ・・

    参照設定を参考にして下さい。
    その中に「参照不可」みたいな表示が有りませんか?
    参照名がAcrobat XとAcrobat STDでは違うのかもしれません。
    「Acrobat STD」?かは不明ですが、設定し直して下さい。
    基本的にアップグレードした時は上位バージョンに自動切り替えに行くはずですが、失敗しているのかもしれません。
    勘ですが。

    取り急ぎ、返答します。
    解決につながれば幸いです。

  3. 管理人さん
    早速のご連絡、ありがとうございました。
    参照設定について、「参照不可」のような表示はなく、「Adobe Acrobat 10.0 Type Library」「場所: C:Program Files¥Adobe¥Acrobat 2015¥Acrobat¥acrobat.tlb」「言語 :標準」となっていました。一度、設定を外し、保存→パソコンを再起動→再度参照設定→保存→パソコンを再起動しましたが、改善しませんでした。過去のご経験から、思い付かれたことがあれば、また宜しくお願い申し上げます。
    ※STD とは Standard の略称です。

  4. 新人さんへ

    >※STD とは Standard の略称です。
    え~~!(驚
    でも、前バージョンのAcrobat STD Xでは動作しているのですね。

    Acrobat 9.0 までは動作確認が取れているのですが。Acrobat のOLE(=IAC)を使う条件としてProバージョンを使うと言うのがあります。Standardバージョンは(確か更新系の命令が)未サポートなので実行時にエラーになります。

    Acrobat DCの購入から日数が立っていなければ、(有るのなら)無償サーポート先に電話で確認してください。(カワユイ女性?が出る)チャットサポートも有るみたいです。

    Acrobat STD X で過去に動いたのだか、・・・。(汗
    以前、似たような質問を受けて、環境の再調査をお願いしたら、実は以前はProバージョンだったと言うのが有りました。
    勘が外れることを期待したいです。

    ★いや!、違う (コメントは続く!

    参照設定に「Adobe Acrobat 10.0 Type Library」と表示されていたんですね。
    それは絶対に変です。
    「Adobe Acrobat 10.0」=「Acrobat X」です。
    現在のパソコンの環境が Acrobat STD DC ならば、「10.0」では無く、別のバージョン番号?になるはずです。と思っています。
    その参照設定はタブン間違っています。
    「Adobe Acrobat DC」、「Adobe Acrobat」だけ、「Acrobat」だけ、みたいな別の設定は有りませんか?

    しかし参照設定の「Adobe Acrobat 10.0 Type Library」に「参照不可」の文字が付かないのも変ですね。
    一つのPCに複数のバージョンのインストールをしてませんか? 
    もしそうなら、インストールする順番も影響するはずです。

    でも「場所: C:Program Files¥Adobe¥Acrobat 2015¥Acrobat¥acrobat.tlb」はタブン合ってるでしょうね。Acrobat X なら「Acrobat 2015」では無く「Acrobat 10」のはずです。
    ・・・・。(悩

    環境の再調査をお願いしたいです。

    ※飯に行きます

  5. 管理人さん

    過去の「Adobe Acrobat X Standard 」(Pro ではありません)に於いて、参照設定が「Adobe Acrobat 10.0 Type Library」で、全く問題なく動作していました。先の、
    lRet = objAcroPDDoc.Open(タイトル名)
    だけではなく、
    Set objAcroPDPage = objAcroPDDoc.AcquirePage(0)
    Set objAcroPoint = objAcroPDPage.GetSize
    objAcroRect.Top = 0
    objAcroRect.bottom = objAcroPoint.y * 2
    objAcroRect.Left = 0
    objAcroRect.Right = objAcroPoint.x * 2
    lRet = objAcroPDPage.CopyToClipboard(objAcroRect, 0, 0, 200)
    lRet = objAcroPDDoc.Close
    上記のようなものも、動作していました。

    今回の「Adobe Acrobat DC Standard 」では、参照設定の際、一旦は「Acrobat」を選択しますが、再度確認すると「Adobe Acrobat 10.0 Type Library」と表示が変化していました。

    「Adobe Acrobat DC Standard 」ではなく、「Adobe Acrobat DC Pro 」をインストールすれば、解決する可能性がありますでしょうか?

    大変お手数ですが、宜しくお願い申し上げます。

  6. 管理人さん

    お世話になります。
    お尋ね頂いた「一つのPCに複数のバージョンのインストールをしてませんか?」について、ライセンスの関係上、単一バージョンのみインストールして使用しています。すなわち、過去は「Adobe Acrobat X Standard 」のみ、現在は「Adobe Acrobat DC Standard 」のみインストールされています。

    宜しくお願い致します。

  7. 新人さんへ

    過去の時の
    ・OSバージョン
    ・Officeバージョン
    それと、現在のバージョンを教えて下さい。
    Officeを使ってないのなら、関連するツール(Visual Studio 等)のバージョンをお願いします。

    それと
    「場所: C:¥Program Files¥Adobe¥Acrobat 2015¥Acrobat¥acrobat.tlb」は
    「場所: C:¥Program Files (x86)¥Adobe¥Acrobat 2015¥Acrobat¥acrobat.tlb」の間違いでは無いですね?

  8. 管理人さん

    お手間をお掛けし、誠に申し訳ございません。

    ・過去のOSバージョン
    → Windows 7 Professional Service Pack 1
    ・過去のOfficeバージョン
    → Microsoft社製 Office 2010
    ・ それと、現在のバージョンを教えて下さい。
    →OS も Office も、過去と同じです。過去と現在との違いは、「Adobe Acrobat X Standard 」と「Adobe Acrobat DC Standard 」のみです。

    ご指導の程、宜しくお願い申し上げます。

  9. 管理人さん

    >「場所: C:¥Program Files¥Adobe¥Acrobat 2015¥Acrobat¥acrobat.tlb」は
    >「場所: C:¥Program Files (x86)¥Adobe¥Acrobat ¥2015Acrobat¥acrobat.tlb」の間違いでは無いですね?

    上記について、再度確認しましたが、間違いではございません。
    宜しくお願い致します。

  10. 新人さんへ

    Office VBAでの開発ならば、F8キーでステップ実行させてください。
    そして、どの箇所でエラーになるか、エラーになる箇所のステートメントの内容も正確に教えて下さい。

    できれば、ステートメントは最初の Dim から見せてください。

  11. 管理人さん

    何度も、申し訳ございません。

    マニュアルにて、別に作成した pdf ファイルを、指定フォルダに指定ファイル名で保存します。この作業の前には、Adobe社のOLE機能や Excel VBA は利用していません。その後、以下を実行しています。

    'マニュアルにて保存したPDFファイルを再度開く
    lRet = objAcroPDDoc.Open(タイトル名)
    ※ここでいきなりエラーになります。過去は、問題なく、動作していました。
    ※タイトル名には、指定フォルダの指定ファイル名がフルパスで入っています。

    '1ページ目のPDPageオブジェクトを取得する
    Set objAcroPDPage = objAcroPDDoc.AcquirePage(0)

    '指定されたページのサイズ(幅=x,高さ=y)をポイント(Point)オブジェクトで返す
    Set objAcroPoint = objAcroPDPage.GetSize

    'ページ全体を範囲に設定
    objAcroRect.Top = 0 'トップ
    objAcroRect.bottom = objAcroPoint.y * 2 'ボトム:200%を設定
    objAcroRect.Left = 0 '左
    objAcroRect.Right = objAcroPoint.x * 2 '右:200%を設定

    'ページ全体をクリップボードに入れる
    lRet = objAcroPDPage.CopyToClipboard(objAcroRect, 0, 0, 200) '200%でコピー

    '保存しないでpdfを閉じる
    lRet = objAcroPDDoc.Close

    'オブジェクトを強制開放
    Set objAcroRect = Nothing
    Set objAcroPoint = Nothing
    Set objAcroPDPage = Nothing
    Set objAcroPDDoc = Nothing

    その後、クリップボード内のデータを Excel のワークシートに貼り付けています。大変申し訳ございません、宜しくお願い申し上げます。

  12. 管理人さん

    お世話になります。見落としていた「ステートメントは最初の Dim から見せてください」について、以下の通り、ご連絡差し上げます。

    Dim objAcroPDDoc As New Acrobat.AcroPDDoc
    Dim objAcroPDPage As Acrobat.AcroPDPage
    Dim objAcroPoint As Acrobat.AcroPoint
    Dim objAcroRect As New Acrobat.AcroRect
    Dim lRet As Long '戻り値

    宜しくお願い申し上げます。

  13. 新人さんへ
    一つ一つ、確認しながら行きましょう。
      
    >Dim objAcroPDDoc As New Acrobat.AcroPDDoc
    >・・・
    >lRet = objAcroPDDoc.Open(タイトル名) ★<-ココで430エラー
      
    Dimを無事通過したと言うことは参照設定の問題では無い。タブン
      
    上記のタイトル名のファイルパス部分をそのままコピペして、Acrobat本体でそのPDFが正常にOpen出来るかを試して下さい。パスの再確認です。
      
    それと、Dimの最初に
    On Error Resume Next
    を入れて再度F8のステップ実行。
    もし objAcroPDDoc.Open を無事通過したら、その時のlRetの値が0かを確認。
    再度、430エラー発生なら・・・、どうしよう~~(悩
      
    連絡
    ・参照設定の「Adobe Acrobat 10.0 Type Library」
    この件はタブンですが問題ないと思います。 Acrobat XI (11.0) も同じ内容です。つまり、OLEの部分に関しては Acrobat X(10.0) からバージョンアップしてないと言う事です。Adobeさん、イイ商売してます。
    ・Acrobat DC のバージョン番号は Acrobat 2015 みたいです。
    ・Office 2010 は持ってないのでOffice 2007 で現在、一時的な仮想環境を作成中です。が、低スペック環境な上にバックグランドでやらせてますので、出来るのは・・・明日かな?。午前中からWindows Updateしてますが、まだ半分・・・(涙。

    ティータイム!

    Acrobat STD DCの無料体験版が無い。
    Acrobat Pro DCの無料体験版は有るが、どうしよう!?

  14. 管理人さん

    お世話になり、ありがとうございます。

    >上記のタイトル名のファイルパス部分をそのままコピペして、Acrobat
    >本体でその PDF が正常に Open 出来るかを試して下さい。パスの
    >再確認です。
    →これは、正常に開くことが出来ました。

    >それと、Dim の最初に On Error Resume Next を入れて再度 F8 の
    >ステップ実行。もし objAcroPDDoc.Open を無事通過したら、
    >その時の lRet の値が0かを確認。
    →上記を実施する中で、下記の現象が起こりました。

    ・現在のプログラムのまま、通常通りに実行させると、前述の通り 430エラー
    ・エラーになるステートメントの直前に STOP を加え、そこで中断後、F8 にてステップ実行させると正常動作(lRetの値は-1=成功)

    えっ、と言うことで、先の STOP を削除し(元に戻し)、再度通常通りに実行させたら、430エラーにはならず、正常動作するようになりました。

    パソコンを再起動し、再度通常通りに実行させても、正常動作しました。すなわち、430エラーが再現しなくなってしまいました。

    素人の私には、全く原因が分かりません。が、何とか使用出来るようになり、ホッとしています(いつエラーが再発するか、不安ですが…)。

    管理人さんには非常に重要なきっかけとなるアドバイスを頂き、大変感謝しております。エラー再発の際は、再度ご指導の程、お願い致します。また、今後とも、この HP を活用させて頂きたく(この HP が無かったら、現在のプログラム自身が存在していません)、併せて、宜しくお願い申し上げます。

    繰り返しになりますが、本当にありがとうございました。

  15. 新人さんへ
    そうですか、良かったです。 (´;ω;`)

    二日前からWindows 7 & Windows 10 共に大型のWindowsUpdateが出ています。 その影響もチョイ考えられます。
    430エラー自体がシステム環境に関するエラーですから。

    後ですね、実行はExcelでしょうか?
    Excelに限らず、VBAをゴチゃゴチャ書いてると内部にゴミ?が溜まってブクブクと太りマレにですが変なエラーになることも古いOfficeでは有りました。その場合は、コードだけ別のファイルにコピーして実行するとエラーは消えました。

    それとは別に、・・・;。

    >・エラーになるステートメントの直前に STOP を加え、そこで中断後、F8 にてステップ実行させると正常動作(lRetの値は-1=成功)

    タブン、タブンですが、430エラーは再現する、かも。(勘
    再現したら、以下のオマジナイ(御札)をOpenの前に入れてください。

    ‘※メモリにAcrobatを強制ロードさせる
    objAcroApp.CloseAllDocs

    一応、入れる場所のサンプルは以下を参照。
    http://pdf-file.nnn2.com/?p=764

    処理が終わったら、最後に以下を追加することも忘れずにお願いします。

      ‘Acrobatアプリケーションの強制終了
    objAcroApp.Hide
    objAcroApp.Exit
    ‘オブジェクトの強制開放
    Set objAcroApp = Nothing

    Acrobat DCのIACのバージョンが上がってないことは判りましたが、何らかの環境の影響を受けている部分が有るかもしれません。
    OLE(IAC)はAcrobat本体がメモリ上に存在しないとエラーになる場合が有ります。それを防ぐために勝手に考えた「強制メモリロード」です。Dimは参照だけでメモリにロードしません。
    上記の命令を最初に実行しても何も影響は有りません。むしろ、直前の実行エラーで開いたままのPDFファイルを強制で閉じるメリットも有ります。

    Paナのお仕事、ほどほどに頑張って下さい。(^_^)/~

  16. このコメントについて、公開なくてよいのですが、
    FINDTEXTで昨日質問させて頂いた者ですが、
    質問をしておいて、失礼かもしれませんが、
    こちらのサイトにアドレスを書いてまだ二日なんですが、書き込みしてから迷惑メールが300通以上来るようになりました。
    自分のアドレスを全て消してもらえないでしょうか。
    申し訳けありませんが宜しくお願い致します。

  17. そうですか。
    サイトへの侵入は3重にも4重にも、更に監視ソフトも複数導入しています。
    まあ、100%安全なサイトなど存在しませんけど。
    とりあえず、希望の事はしました。

コメントを残す

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

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin

VBA(Excel)からAcrobat経由でPDFをプログラミング操作(OLE:IAC)する