Skip to main content
Participant
June 11, 2024
Answered

VBAによるPDF操作(TIFFファイル変換)

  • June 11, 2024
  • 2 replies
  • 1882 views

Adobe Acrobat DC(2015)とVBAを使って、複数のPDFをTIFFファイルに変換する作業を行っていました。
Adobe Acrobat Standard(ETLA)を新たに契約したのですが、これまで出来ていた上記の様なPDF操作が出来なくなりました。
何かしらVBAからの操作に対して制約が出来たのでしょうか?

 

PCスペック

OS:Windows11

ディスク空き容量:45GB

物理メモリ:32GB

他に思いアプリケーションと立ち上げている訳でもなく

仮想メモリを設定上から増やしてみても同じでした。

This topic has been closed for replies.
Correct answer IceFloe

MacOSの場合の回避方法は
参考にならないかもですが
ちょっと説明足りなかったかな?と思ったので追記しておきますね

『書き出し先』のファイル名のベースになるファイルのパス指定部分

 

set strDirPath to ("/Users/Shared/PDF Export/Save/ファイル名にしたい文字列.tiff") as text
set aliasDirPath to (POSIX file strDirPath) as «class furl»

 

実働は
『ファイル名にしたい文字列.tiff』に対して
ファイル名にしたい文字列_ぺージXX.tiffとページ番号が自動で付与されて書き出されるわけですが
AcrobatのV22までは
"/Users/Shared/PDF Export/Save/ファイル名にしたい文字列.tiff"といった感じで
UNIX形式のテキスト形式のパス指定で通っていたんですが
v22以降は

set aliasDirPath to (POSIX file "Macintosh HD:Users:Shared:PDF Export:Save:ファイル名にしたい文字列.tiff") as «class furl» といった感じで
MacOSのエイリアス=実体参照形式で指定しないと通らなくなったんですね
ソースの
as «class furl» は『実態があるテイで処理しなさい』って意味なので
ソースの先に書いた間違いの内容のように
ファイル名にしたい文字列.tiffって名称でフォルダを作っておかないと動作しないだったんです
v22から書き出し方法のパス指定で何か?が変わった事は確かなので
パスの指定方法を色々試してみると、書き出せる記述方法がある『かも』しれません
って事でした
追記でした

Windowsなエキスパートな方からコメントあるといいんですが…
Macな話で失礼しました
参考まで

2 replies

Participant
June 12, 2024

マクロを記載していたのですが、なぜか表示されていませんでした。

 

Private Sub PDF_TIFF()

 Dim objAcroApp As New Acrobat.AcroApp
 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
 Dim objAcroPDDoc As Acrobat.AcroPDDoc
 Dim lRet As Long
 Dim jso As Object

 'Acrobatアプリケーションを起動する。
 lRet = objAcroApp.Show
 'PDFファイルを開いて表示する。
 lRet = objAcroAVDoc.Open("フォルダアドレス\ファイル名.pdf", "")
 'PDDocオブジェクトを取得する
 Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
 'JavaScriptオブジェクトを作成する。
 Set jso = objAcroPDDoc.GetJSObject
 jso.SaveAs "フォルダアドレス\ファイル名.tiff", "com.adobe.acrobat.tiff"

 'PDFファイルを変更無しで閉じます。
 lRet = objAcroAVDoc.Close(1)
 'Acrobatアプリケーションを終了する。
 lRet = objAcroApp.Hide
 lRet = objAcroApp.Exit
 'OLEを行うとAcrobatが不安定になるので、
 '一応オブジェクトを強制開放する。
 Set jso = Nothing
 Set objAcroAVDoc = Nothing
 Set objAcroApp = Nothing

End Sub

IceFloe
IceFloeCorrect answer
Participating Frequently
June 13, 2024

MacOSの場合の回避方法は
参考にならないかもですが
ちょっと説明足りなかったかな?と思ったので追記しておきますね

『書き出し先』のファイル名のベースになるファイルのパス指定部分

 

set strDirPath to ("/Users/Shared/PDF Export/Save/ファイル名にしたい文字列.tiff") as text
set aliasDirPath to (POSIX file strDirPath) as «class furl»

 

実働は
『ファイル名にしたい文字列.tiff』に対して
ファイル名にしたい文字列_ぺージXX.tiffとページ番号が自動で付与されて書き出されるわけですが
AcrobatのV22までは
"/Users/Shared/PDF Export/Save/ファイル名にしたい文字列.tiff"といった感じで
UNIX形式のテキスト形式のパス指定で通っていたんですが
v22以降は

set aliasDirPath to (POSIX file "Macintosh HD:Users:Shared:PDF Export:Save:ファイル名にしたい文字列.tiff") as «class furl» といった感じで
MacOSのエイリアス=実体参照形式で指定しないと通らなくなったんですね
ソースの
as «class furl» は『実態があるテイで処理しなさい』って意味なので
ソースの先に書いた間違いの内容のように
ファイル名にしたい文字列.tiffって名称でフォルダを作っておかないと動作しないだったんです
v22から書き出し方法のパス指定で何か?が変わった事は確かなので
パスの指定方法を色々試してみると、書き出せる記述方法がある『かも』しれません
って事でした
追記でした

Windowsなエキスパートな方からコメントあるといいんですが…
Macな話で失礼しました
参考まで

Participant
June 13, 2024

IceFloe様

 

追記ありがとうございます。

 

なかなか、MacOSとの違いで戸惑っています。

 

理解出来た範囲では、変換したいファイル名と同じ名前のフォルダを作成し

そのフォルダに変換したファイルを保存する流れを作るといけるかも?という

解釈を勝手ながらさせて頂きました。

 

一度、上記を加味してマクロを作り直してみます。

 

IceFloe
Participating Frequently
June 11, 2024

私はMacユーザーなので
あまり参考にならないかもしれませんが
ヒントになるかな?とおもって書いておきますね

 

>ファイルに香き込み中にエラーが発生しました。
>ディスク容量が不足している可能性があります。
普通にMacでも出ます♪笑♪

なわけなので
普段は
書き出し系は『javascriptAPI』を利用しているので

AcrobatDC SCA版 : 24.002.20759
DCトラック SCA版 Acrobat FULL版 : レベル 3:DC製品版
OSバージョン:14.5
旧UI AV2新UI共に問題なく書き出し出来ています。
コード的にはこんな感じ

 

 

 

this.saveAs({cPath:strSavePath, bPromptToOverwrite: false,cConvID:'com.adobe.acrobat.tiff',bCopy:false});

 

 

 


macOSの Interapplication Communication
AppleScriptなので
回答にもならないのですが
AppleScriptの場合の書き出しコードは

ーーーー以下 記述に間違えがありますが パスの指定部分で参考になるかも?なので残します
----スクリプト正解版はこのコメントの最後の部分に記載しました

 

 

tell application "Adobe Acrobat"
save active doc to file ファイルパス using conversion "com.adobe.acrobat.tiff"
end tell

 

 

 

『Macの場合は』
ファイルパスの部分を工夫するとエラー回避できます
サンプルで

 

 

 

/Users/Shared/PDF Export/Save/Dummy/

 

 

 

 

指定すると
こんな感じで書き出されます


書き出し時のコードは

 

 

 

set aliasDirPath to (POSIX file "/Users/Shared/PDF Export/Save/Dummy") as alias
tell application "Adobe Acrobat"
save active doc to file aliasDirPath using conversion "com.adobe.acrobat.tiff"
end tell

 

 

 


書き出し終わったら拡張子つければ良いのですが
面倒なんでAppleScriptからの書き出しももうちょっと前から使っていません。…笑

 

もちろん、バグです♪爆笑
ですが、たぶん、治る日は来ないと…思っています
(それでなくてもAcrobatのAppleScriptは残念仕様なんで…笑)

一番良いのはJavaScriptAPIに移行するのが良いとは思いますが

現行のソースの『パス指定部分』をバグがあるのを『踏まえて』
色々指定してみれば、書き出せるパス指定がある『かも』しれません

 

参考まで

 

ーーー追記訂正

『Macの場合は』バグじゃないわ…失礼しました

コード間違えているね…反省
こうすれば意図するファイル名で書き出せます
大変失礼しました。

 

 

#書き出しパス指定
set strDirPath to ("/Users/Shared/PDF Export/Save/ファイル名にしたい文字列.tiff") as text
set aliasDirPath to (POSIX file strDirPath) as «class furl»
###書き出し本体
tell application "Adobe Acrobat"
	save active doc to file aliasDirPath using conversion "com.adobe.acrobat.tiff"
end tell
(*
書き出し系 画像系はこの方法で大丈夫でした
com.adobe.acrobat.png
com.adobe.acrobat.tiff
com.adobe.acrobat.jpeg
*)

 

 


 失礼しました

 

ーー追記の追記
RTFリッチテキストとかこの方法では書き出せない種類のコンバージョンもあるので
やっぱり『バグはある』が正解でした
失礼しました

 

Participant
June 12, 2024

IceFloe様

 

絵付きで丁寧な回答ありがとうございます。

まずは、試行錯誤できる要素が見つかって助かりました。