回答編集履歴

1

コメントに対する追記

2019/12/14 11:48

投稿

amahara_waya
amahara_waya

スコア1029

answer CHANGED
@@ -1,5 +1,24 @@
1
+ [コメントに対する追記]
1
- 1Worksheets("Sheet1").Range("A1:G37").Clearのように範囲指定で削除する方法はあります。
2
+ 失礼しましたよく調べたところClearはVBA専用メソッドでした。申し訳ありません。openpyxl単体で範囲削除する方法はないみたいです。
2
3
 
4
+ 幸い、PythonからVBAを実行するコードはありますので、一度Excelのマクロを作成し、下記コードを使えば、Clearするマクロを実行することは出来ます。
5
+
6
+ ```Python3
7
+ import win32com.client # ライブラリをインポート
8
+ excel = win32com.client.Dispatch("Excel.Application") # インスタンス生成
9
+ excel.Visible = 1 # エクセルを表示する設定(0にすれば非表示で実行される)
10
+ excel.Workbooks.Open(Filename="C:\macro_book.xlsm", ReadOnly=1) # ブックを読み取り専用で開く
11
+ excel.Application.Run('msg("aaa")') # マクロ名を指定して実行(引数なしの場合マクロ名のみで実行可能)
12
+ excel.Workbooks(1).Close(SaveChanges=1) # ブックを保存して閉じる(SaveChangesを0にすると保存せず閉じる)
13
+ excel.Application.Quit() # 終了
14
+ ```
15
+
16
+ 参考記事:[PythonからExcelのVBA(マクロ)を実行する方法](https://code-life.hatenablog.com/entry/2018/05/15/Python%E3%81%8B%E3%82%89Excel%E3%81%AEVBA%EF%BC%88%E3%83%9E%E3%82%AF%E3%83%AD%EF%BC%89%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)
17
+
18
+ ~追記終わり~
19
+
20
+ ~~1、Worksheets("Sheet1").Range("A1:G37").Clearのように範囲指定で削除する方法はあります。~~
21
+
3
22
  2、以下のような形であれば、まとめて代入することが出来ます。
4
23
 
5
24
  ```python3