teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

誤字を修正

2023/01/13 09:10

投稿

jhashimoto
jhashimoto

スコア843

answer CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  検証してみました。
38
38
 
39
- 文書を変更してから元のファイルを上書きするように、コードを改変しました。実行すると、ファイルが更新され、パスワードも解除されることが確認でき、仮が正しいことが実証できました。
39
+ 文書を変更してから元のファイルを上書きするように、コードを改変しました。実行すると、ファイルが更新され、パスワードも解除されることが確認でき、仮が正しいことが実証できました。
40
40
 
41
41
  ```Python
42
42
  rng = doc.Range(0, 1)

1

補足説明の表現を修正

2023/01/11 02:27

投稿

jhashimoto
jhashimoto

スコア843

answer CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  検証したコードです。※事前にunlockedフォルダを作成しておく必要があります
4
4
 
5
+ # 解決策
6
+
5
7
  ```Python
6
8
  import win32com.client
7
9
 
@@ -22,12 +24,20 @@
22
24
  doc.Close()
23
25
  word.Quit()
24
26
  ```
27
+
25
28
  [Document.SaveAs2 メソッド (Word) | Microsoft Learn](https://learn.microsoft.com/ja-jp/office/vba/api/word.saveas2)
26
29
 
30
+ # 補足説明
31
+ 質問者さんが提示したコードでは、パスワードが解除されない原因を説明します。
32
+
27
33
  元のファイルを上書きしようとしてもパスワード解除が反映されないのは、ファイルが更新されないからです。スクリプト実行後もファイル更新日時に変更がないことから、更新されていないことがわかります。
28
34
 
29
- 次のようにコードを改変し、文書を変更してから元のファイルを上書きすると、ファイルが更新され、パスワードも解除されます。
35
+ 仮説:ファイルが更新されれば、パスワードも解除されるのでは?
30
36
 
37
+ 検証してみました。
38
+
39
+ 文書を変更してから元のファイルを上書きするように、コードを改変しました。実行すると、ファイルが更新され、パスワードも解除されることが確認でき、仮設が正しいことが実証できました。
40
+
31
41
  ```Python
32
42
  rng = doc.Range(0, 1)
33
43
  rng.Bold = True # 太字に設定
@@ -36,4 +46,4 @@
36
46
  doc.SaveAs2(locked, None, None, "")
37
47
  ```
38
48
 
39
- しかし、文書を変更することは、質問者さんの意にそぐわないと思われるため、別ファイルとして保存することが回避策になります。
49
+ しかし、文書を変更することは、質問者さんの意にそぐわないと思われるため、先に提示したとおり、別ファイルとして保存することが解決策になります。