質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

Q&A

解決済

1回答

1048閲覧

VBAでWord文書をPDF化するとき、空の文書&パスワード付きはNGとしてエラー出力したい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

0グッド

0クリップ

投稿2020/03/03 05:05

いつもお世話になっております。
今回はExcelVBAを使って、Word文書をPDF化することに対しての質問です。
本来、Word文書がもし空の文書だった場合でもPDF化されるのはWordのもともとの仕様だそうですが、
パスワードをつけた文書の場合はNGとしてエラー出力したいのです。
しかし、現在は空の文書で、かつ、パスワードがかかっているものでも文書が空のためかそのままPDF化されてしまいます。
そこで、空の文書の場合はPDF出力するけど、パスワードがかかっている&からの文書の場合はNGとしてエラー出力できるようにしたいのですが、何か良い方法はありますでしょうか?
是非とも知見をお借りできると嬉しいです。

VBA

1'略======================== 2 3 Case "doc", "docx", "docm" 'Word97-2003,Word2007以降 4 On Error GoTo 0 5 On Error GoTo myError3 6 Set objOffice = CreateObject("Word.Application") 7 On Error GoTo 0 8 On Error GoTo myError2 9 Debug.Print Path 10 With objOffice.Documents.Open(Path) 11 .ExportAsFixedFormat OutputFileName:=FilePath, _ 12 ExportFormat:=wdExportFormatPDF 13 .Close 14 End With 15 On Error GoTo 0 16 On Error GoTo myError 17 Call output_Result(Path, FilePath, strResult, wsResult, strErrMsg) 18 objOffice.Quit 19 20'略======================== 21 22myError: 23 'エラーメッセージ 24 MsgBox strWarningMsg3 & _ 25 vbCrLf & "エラー番号: " & Err.Number & _ 26 vbCrLf & "エラー内容: " & Err.Description 27 End 28myError2: 29 strResult = "NG" 30 strErrMsg = strErrMsg1 31 Resume Next 32myError3: 33 strResult = "NG" 34 strErrMsg = strErrMsg1 35 Call output_Result(Path, FilePath, strResult, wsResult, strErrMsg) 36 Exit Sub 37End Sub

以上のロジックのどこに何を加えればいいのかなど分かれば教えていただけますでしょうか?
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yureighost

2020/03/03 05:37

読み取り、書き込み、どちらのパスワードが設定されている想定でしょうか。
退会済みユーザー

退会済みユーザー

2020/03/03 05:52

ありがとうございます。どちらも、です。
yureighost

2020/03/04 00:21

また質問で申し訳ないですが、 貼られてるソースでパスワード付きWordをPDF変換する時は パスワードを手入力するやり方ですか?
退会済みユーザー

退会済みユーザー

2020/03/04 00:33

そうです。パスワード入力ダイアログボックスが出てくるので、そこに手入力でパスワードを入力します。
guest

回答1

0

ベストアンサー

一旦パスワードを入力して開いた状態のWord文書なら、
読み取りパスワードはDocument.HasPassword、書き込みパスワードはDocument.WriteReservedで
設定有無をBoolean型で取得できます。

VBA

1Set objOffice = CreateObject("Word.Application") 2Dim doc As Object 3Set doc = objOffice.Documents.Open(Path) 4 5Dim readFlg As Boolean, writeFlg As Boolean 6readFlg = doc.HasPassword 7writeFlg = doc.WriteReserved 8 9doc.Close

こういう感じでパスワードの設定有無フラグを取得して、
Trueの場合に書き出しをせずエラーを表示させるのがいいのではないでしょうか。

投稿2020/03/04 00:53

yureighost

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問