ここから本文です

エクセルのVBAで、パスワードで保護されているワードを開いて、パスワードがかかっ...

mom********さん

2018/3/1218:43:31

エクセルのVBAで、パスワードで保護されているワードを開いて、パスワードがかかっていない状態で名前をつけて、保存するマクロを組みました。

できれば、.docのものは.docxにて保存したいのですが、保存時の名前を・・・.docxとするだけでは、「互換性のないファイル形式とファイル拡張子」とエラーになってしまいます。
組んだマクロは以下のとおりです。
対策をお願い致します。
なお、保存名はエクセルシートにリスト化されています。

Dim Fullpath, Savepath, Stp As String
Dim cell As Long

cell = 6
Do Until Stp = "END"

Sheets("Sheet1").Select
Cells(6, 7).Activate
'pwopen = Range("C3").Value
Fullpath = Cells(cell, 7).Value
Savepath = Cells(cell, 8).Value
Stp = Cells(cell + 1, 7).Value

With CreateObject("word.application")
.Visible = True
.Documents.Open Filename:=Fullpath, PasswordDocument:=pwopen
.Activate
.ActiveDocument.Unprotect Password:=PW
.ActiveDocument.SaveAs Savepath, , , ""
.ActiveDocument.Close

End With

cell = cell + 1
Loop
CreateObject("word.application").Quit
Sheets("ワードリスト").Select
Cells.Select
Selection.ClearContents

Sheets("Sheet1").Activate

End Sub

閲覧数:
55
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

Prometheusさん

2018/3/1222:50:12

今、確かめました。

Sub Sample()
Set wd = CreateObject("Word.Application")
Set dc = wd.Documents.Open("D:\ABC.doc",,,,"xyz")
dc.SaveAs2 "D:\ABC.docx",16,,"",,,,,,,,,,,,,15
dc.Close
wd.Quit
Set dc = Nothing
Set wd = Nothing
End Sub

で、「xyz」というパスワードのかかった、「D:\ABC.doc」を開いて、「D:\ABC.docx」にパスワードを削除し、「互換モード」も出ないようになりました。

dc.SaveAs2 "D:\ABC.docx",16,,"",,,,,,,,,,,,,15

まず、「SaveAs」ではなく、「SaveAs2」であることに注意してください。

次に「16」がデフォルトのファイルフォーマット、すなわち「docx」です。

最後の「15」が「Word2013」形式なのですが、なぜか「Word2010」はあるのに、「Word2016」がなく、「Word2013」が「最新」の意味になっています。

実際に試してみて、間違いなく、「互換モード」がつかない「docx」が作成されました。

質問者なら、この説明で十分だと思います。

質問した人からのコメント

2018/3/13 12:13:31

いつもありがとうございます!

ベストアンサー以外の回答

1〜1件/1件中

sas********さん

2018/3/1220:05:35

.ActiveDocument.SaveAs Savepath, , , ""
これを次に変えればどうですか?
.ActiveDocument.SaveAs2 Savepath, wdFormatDocument, , ""

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる