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ステートメントを使っている為です。

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

 

補足

  • 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