PDFをHTMLに変換する方法(Excel VBAサンプル/2)

TOP > サンプル / 関数 > PDFをHTMLに変換する方法/2      [...]


はじめに

PDFのHTML変換に関しては

  1. 関数:PDFを特定のフォーマットに変換する
  2. PDFをHTMLに変換する方法(Excel VBAサンプル/3)

を参考にして下さい。

当ページのサンプルは不適切です。

しかし、この様な事も出来る、と言う意味で残して置きます。

前回のサンプルを改良したものです。

 

説明

PDFをHTMLに変換します。

Acrobat OLEとExcel VBAの機能を利用します。

まず、Acrobat OLEでPDFを開きます。

次にAcrobatのファイルメニューにある「名前を付けて保存」をショートカットキーで開きます。

これはVBAのSendKeysステートメントを利用します。

それに対して、更にSendKeysステートメントを使って「名前を付けて保存」ダイアログ画面の「ファイルの種類」を「HTML」にして「保存」ボタンをクリックします。

このスクリプトが実行中はパソコンを操作しては絶対ダメです。

SendKeysステートメントが失敗します。

SendKeysステートメントはデスクトップ画面上で最上位のアクティブな画面に実行されるからです。

 


サンプル:ExcelのVBA

  • 参照設定を事前にする。
  • F8キーでステップ実行しながら動作確認出来ません
    SendKeysステートメントを使っている為です。

001 Option Explicit 002 Sub CommandButton9_Click() 003 Dim objAcroApp As New Acrobat.AcroApp 004 Dim objAcroAVDoc As New Acrobat.AcroAVDoc 005 Dim lRet As Long 006 Dim strFileName As String 007 'ファイル名 008 strFileName = "Test01" 009 'Acrobatを起動表示する 010 lRet = objAcroApp.Show 011 'PDFファイルを開いて表示する。 012 lRet = objAcroAVDoc.Open("E:¥" & strFileName & ".pdf", "") 013 '扱っているPDFを画面の最前列に強制的に表示させる。※SendKeysの為 014 lRet = objAcroAVDoc.BringToFront() 015 '「名前を付けて保存」ダイアログを開く 016 lRet = objAcroApp.MenuItemExecute("SaveAs") 017 'ファイル名をセットする 018 SendKeys "%N", True 019 SendKeys strFileName, True 020 '「ファイルの種類」コンボボックスにフォーカスを持っていく 021 SendKeys "%T", True 022 '「ファイルの種別」で「HTML 4.01 - CSS 1.0 準拠(*.htm,*.html)」を選択する 023 SendKeys "H", True 024 SendKeys "H", True 025 '「保存」ボタンをクリック 026 SendKeys "%S", True 027 'PDFファイルを変更無しで閉じます。 028 lRet = objAcroAVDoc.Close(1) 029 'Acrobatアプリケーションを終了する。 030 lRet = objAcroApp.Hide 031 lRet = objAcroApp.Exit 032 'OLEを行うとAcrobatが不安定になるので、一応オブジェクトを強制開放する。 033 Set objAcroAVDoc = Nothing 034 Set objAcroApp = Nothing 035 MsgBox "★完了★" 036 End Sub


 Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
 

補足

  • Acrobat Reader(v8.1.2)では出来ません。
    Acrobat本体がデフォルトでインストールされているパソコン環境だけです。
  • 上記サンプルにも書きましたが、AcrobatはOLEを使用したり、又は環境が古い(新規インストールからの期間が1年以上になる)と不安定になる事があります。
    その場合はOSから再インストールするとある程度安定します。
  • SendKeysステートメントの間にBringToFrontメソッドを入れるとSendKeysステートメントが失敗します。

動作確認環境

  • WindowsXP Pro + SP2 +
    Acrobat 8.1.2 Pro + Office 2003

サンプル一覧

「PDFをHTMLに変換する方法(Excel VBAサンプル/2)」への2件のフィードバック

  1. NORITOさん、さっそくの対応ありがとうございます。 実際動かしてみましたが、動きました!
    しかしVB.NetのSend Keyステートメントはやはり不安定ですね。。。。 これはもう仕方ないですね。
    ご対応心から感謝します。

  2. 言語はVB.Netでしたか。あれはVBAに見せかけたJava言語ですからね。いまだに興味が出ない言語です。但し、ExcelやAccessでVB.NET言語をサポートしたら、このサイトのサンプルもそれを追加したいと考えています。
    >Send Keyステートメントはやはり不安定
    VB.NETは分かりませんが、この手の命令は一旦CPUをOSに戻しすか(DoEvent)、タイマーで0.2秒ほどスリープ(Sleep)させるとうまく行く事があります。VB6でもSendKeysがうまく行かない時はそうしました。
    それと、不要サービスの停止、自動アップデータの停止、ウイルスチェックの一時停止など、バックで動いているAPを一時停止させると安定します。
    私たっだら 無料のMicrosoft Virtual PC 上で不要なサービスを全て削除して、クリーンな環境で一旦ネットも切断して、そのMicrosoft Virtual PC上で動作させます。
    動作未確認ですが・・。
    頑張って下さい。

コメントを残す

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

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

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

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



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

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