Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : その他)
「全般オプション」にあるパスワードを消した状態で保存するには?
投稿日時: 22/11/11 16:12:54
投稿者: Alice

下記ソフトを使用しています。
・Excel for Microsoft 365 MSO
・Word for Microsoft 365 MSO
 
Excel VBAでWordの操作をしています。
Wordに「読み取りパスワード」が設定されている為、次に開くときにパスワードをきいてこないよう、下記フローのコーディングをしています。
 
「名前をつけて保存」の「ツール」にある「全般オプション」

「読み取りパスワード」を空欄にする

保存
 
--------------
下記のように作成しましたが、SaveAs2の処理をするとエラー448が発生するせいか、一連の処理後にPWがかかっているWordを開くと「パスワードを入力して下さい」のMSGが表示されます。
 
下記URLのサイトを見て、パスワードを「""」ではなく、あらかじめ「""」を変数定義をして試してみましたが同様です。
https://www.global.co.jp/iep/iep62/iep621201.html
 
手詰まりになってしまった為、こちらに書き込みを致しました。
ご教示いただけると幸いです。
宜しくお願い致します。
 
Set appWord = CreateObject("Word.Application")
 
 〜〜 割愛 〜〜
 
With appWord
   .Documents.Open Filename:=myFile, PasswordDocument:=PW
   .Visible = True
 
   appWord.ActiveDocument.SaveAs2 Filename:=myFile, Password:="", WriteResPassword:=""
 
End With
 
 〜〜 割愛 〜〜
appWord.Quit
Set appWord = Nothing
 
※ 変数のmyFile、PWはイミディエイトウィンドウで取得できていることを確認済
 
 

回答
投稿日時: 22/11/11 20:09:19
投稿者: simple

SaveAs2メソッドのヘルプで、機能とか、引数の名前とかを確認したらどうでしょうか。

回答
投稿日時: 22/11/12 16:09:12
投稿者: simple

Document.SaveAs2 メソッド の ヘルプ
https://learn.microsoft.com/ja-jp/office/vba/api/word.saveas2
から引用。
> 指定した文書を新しい名前または形式で保存します。
 
WriteResPasswordなどという名前付き引数は無いようですが?

投稿日時: 22/11/15 13:58:14
投稿者: Alice

simple様
 
ご指摘ありがとうございます。
 
作成コードは、下記サイトを参考にして作ったのですが、SaveとSaveAs2では書き込みパスワードの名前付き引数が異なる点に気が付きませんでした。
 
https://excel-toshokan.com/vba-save-password/
http://officetanaka.net/excel/vba/tips/tips201.htm
 
名前付き引数を正しく直してリトライしたのですが、ファイル名が同名だと元々の設定が引き継がれてしまうことに気付きました。
(別ファイル名にすると、再度該当ファイルを開く時にPWは求められずにすむ)
 
下記サイトの「ベストアンサー」のアドバイス通りにやるしかないかな。。と考えています。
 
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12163447417
 
simple様のおかげで、ここまで原因と対処を突き止めることができました。
いつも感謝しております。
 
 

投稿日時: 22/11/18 08:57:54
投稿者: Alice

本件、15日に投稿したやり方で解決したので、「解決済」にします。