回答編集履歴

1

質問への回答

2021/09/24 01:08

投稿

TakaiY
TakaiY

スコア13792

test CHANGED
@@ -37,3 +37,65 @@
37
37
 
38
38
 
39
39
  これでいいはずです。
40
+
41
+
42
+
43
+
44
+
45
+ ---
46
+
47
+
48
+
49
+ 質問への回答です。
50
+
51
+
52
+
53
+ > リストがあって、そのリストに対するトリガーがあり、トリガーを引くと、変数にリストが一つずつ代入されて処理がループするものだと思っていました。
54
+
55
+ 今回でいうと、wb.worksheets = [<Worksheet "個人">, <Worksheet "月">]という内容になっていますので、これをループしているのかと思っていますがなぜブック自体をループして保存されているのかわかりましたらご教授お願いいたします。
56
+
57
+ 「認識内容」
58
+
59
+ for i in sample_list:
60
+
61
+ print(i)
62
+
63
+ _# 結果はこちら
64
+
65
+ """
66
+
67
+ あいうえお
68
+
69
+ かきくえこ
70
+
71
+
72
+
73
+ ループの理解は合ってますよ。
74
+
75
+ 「トリガー」という言葉はループの説明には使われないので、理解されにくいでしょうけど。
76
+
77
+
78
+
79
+ 提示されている以下の処理も、ご理解のとおり、wsにシートが1つずつ束縛されて処理が周ります。シートが2つあるのであれば、2回まわります。
80
+
81
+
82
+
83
+ ```python
84
+
85
+ for ws in wb.worksheets:
86
+
87
+ wb.save('C:\デスクトップ\maruse\100.xlsx')
88
+
89
+ ```
90
+
91
+
92
+
93
+ ですが、ここで、saveしている処理を見ると、saveしているのは、wsではなく、wbです。
94
+
95
+ wbはエクセルのブックですから、違う名前で保存すれば、コピーができあがります。
96
+
97
+
98
+
99
+ 他の方の回答にあるとおり、for文で束縛しながら回していたとしても、wbにあるシートがなくなるわけではありません。
100
+
101
+ for文の中でも、抜けた後でま、wbに入っているシートの状態は変わりません。