回答編集履歴

2

誤字を修正

2023/01/13 09:10

投稿

jhashimoto
jhashimoto

スコア838

test 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

スコア838

test CHANGED
@@ -1,6 +1,8 @@
1
1
  パスワードに空文字列を設定し、別ファイルとして保存することで、ファイルを開くためのパスワードを解除できました。
2
2
 
3
3
  検証したコードです。※事前にunlockedフォルダを作成しておく必要があります
4
+
5
+ # 解決策
4
6
 
5
7
  ```Python
6
8
  import win32com.client
@@ -22,11 +24,19 @@
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)
29
+
30
+ # 補足説明
31
+ 質問者さんが提示したコードでは、パスワードが解除されない原因を説明します。
26
32
 
27
33
  元のファイルを上書きしようとしてもパスワード解除が反映されないのは、ファイルが更新されないからです。スクリプト実行後もファイル更新日時に変更がないことから、更新されていないことがわかります。
28
34
 
35
+ 仮説:ファイルが更新されれば、パスワードも解除されるのでは?
36
+
37
+ 検証してみました。
38
+
29
- 次のようにコードを改変し、文書を変更してから元のファイルを上書きすると、ファイルが更新され、パスワードも解除されま
39
+ 文書を変更してから元のファイルを上書きするように、コードを改変しました。実行すると、ファイルが更新され、パスワードも解除されることが確認でき、仮設が正しいことが実証できした
30
40
 
31
41
  ```Python
32
42
  rng = doc.Range(0, 1)
@@ -36,5 +46,5 @@
36
46
  doc.SaveAs2(locked, None, None, "")
37
47
  ```
38
48
 
39
- しかし、文書を変更することは、質問者さんの意にそぐわないと思われるため、別ファイルとして保存することが回避策になります。
49
+ しかし、文書を変更することは、質問者さんの意にそぐわないと思われるため、先に提示したとおり、別ファイルとして保存することが解決策になります。
40
50