終了

ExcelのVBAからPDFのパスワード有無を判定したい

New Here ,
Aug 04, 2021 Aug 04, 2021

リンクをクリップボードにコピー

コピー完了

当方、ExcelのVBAにて一括印刷ツールを作成しております。
検索してなかなか情報にたどりつけなかったので、こちらにご質問させていただきます。
ExcelのVBAからPDFのパスワード有無を判定できる方法を探しています。
ご存じの方、ご教示いたたければ幸いです。


当方の環境は
Acrobat Reader DCのバージョン
2021.005.20060
Excelのバージョン
Office365 MSO 16.0.13127.21698 64ビット
です。

VBAでページ数を取得は、VBscript.RegExpで可能でした。
以下VBAコードは

Sub PDFページ数カウント()

Dim RegExp As Object, xFileNum As String, xStr As String

  Set RegExp = CreateObject("VBscript.RegExp")
  RegExp.Global = True
  RegExp.Pattern = "/Type\s*/Page[^s]"
  xFileNum = FreeFile
  Open ("※PDFファイルパス") For Binary As #xFileNum
  xStr = Space(LOF(xFileNum))
  Get #xFileNum, , xStr
  Close #xFileNum
  Debug.Print RegExp.Execute(xStr).Count

  Set RegExp = Nothing

End Sub


VBA印刷は、Wscript.Shellで可能でした。
以下VBAコードは


Sub PDF印刷()

Dim Fso As Variant, FName As String, WSH As Variant
Dim printPdf As String

Set Fso = CreateObject("Scripting.FileSystemObject")
FName = "※PDFファイルパス"
printPdf = "AcroRd32.exe /h /p " & FName
Set WSH = CreateObject("Wscript.Shell")
  WSH.Run (printPdf)

Set Fso = Nothing
Set WSH = Nothing

End Sub


VBA側より、PDFファイルのファイルパスワードがかかっているか、かかっていないか
判定できる方法はありますでしょうか?かかっていない場合は印刷し、かかっている場合は印刷しない処理に進みます。
VBscript.RegExp で行うのか、Wscript.Shellで行うのかまったく情報がありません。

ご返信お待ちしております。

表示

3.9K

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Aug 05, 2021 Aug 05, 2021

リンクをクリップボードにコピー

コピー完了

VBAについては全くの門外漢なのですが、そのスクリプト自体はPDFファイルをダイレクトに参照して中身を検索しているのですよね?
EncryptがかかったFileStream中ではキーワードが引っかかりませんから意図通りにページ数が取得できなければスクランブルがかかっていると判断できそうです。というかEncryptで検索してもいいかもしれません。
ひとつ申し添えておくとPDFのページ数カウントは「Type Pages」をカウントするだけでは不十分です。バージョンやシリアライズの有無によってはCountキーワードを参照したりType Pagesに続く行のCountを参照したりといくつかを併用する必要があるでしょう。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Aug 11, 2021 Aug 11, 2021

リンクをクリップボードにコピー

コピー完了

最新

Ten A様
ご返信ありがとうございます。
Encryptで検索したところ、パスワードがかかっているものに対してはヒットし、かかっていないものは0で、判別できました。ありがとうございました。
ページ数取得に関しては、まだ検証していませんが試してみます。
誠に感謝しております。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines