回答編集履歴

2

追記

2020/11/16 07:49

投稿

nto
nto

スコア1438

test CHANGED
@@ -19,3 +19,65 @@
19
19
 
20
20
 
21
21
  ```
22
+
23
+
24
+
25
+
26
+
27
+ ### binファイルの抽出とExcelファイルへの適用について
28
+
29
+ .to_excel()では直接xlsmを生成/上書きする事は出来ません。
30
+
31
+ 既存のマクロ有効ブックを上書きするといった場合には
32
+
33
+ - 予めバイナリファイルを抽出してく
34
+
35
+ - 一旦xlsxで保存
36
+
37
+ - その後バイナリファイルを適用
38
+
39
+ - xlsmにリネーム
40
+
41
+
42
+
43
+ という手順を踏む必要があります。バイナリファイルの抽出は以下のコマンドで
44
+
45
+ `vbaProject.bin`というマクロが格納されたバイナリファイルが抽出可能です。
46
+
47
+ ```
48
+
49
+ python C:\Users\ユーザー名\AppData\Local\Programs\Python\Pythonバージョン(適宜)\Scripts\vba_extract.py 抽出したいExcelの絶対パス
50
+
51
+ ```
52
+
53
+
54
+
55
+ binファイルの抽出が出来たら以下の様にして.to_excel()を用いてマクロ有効ブックの保存が可能です。
56
+
57
+ ```python
58
+
59
+ # 一時的に.xlsxで保存
60
+
61
+ writer = pd.ExcelWriter('xxxxx.xlsx', engine='xlsxwriter')
62
+
63
+
64
+
65
+ df_sps.to_excel(writer, sheet_name='Sheet1')
66
+
67
+
68
+
69
+ workbook = writer.book
70
+
71
+ # マクロ有効ブック形式にリネーム
72
+
73
+ workbook.filename = 'xxxxx.xlsm'
74
+
75
+ # binファイルを適用
76
+
77
+ workbook.add_vba_project('./vbaProject.bin')
78
+
79
+
80
+
81
+ writer.save()
82
+
83
+ ```

1

訂正

2020/11/16 07:49

投稿

nto
nto

スコア1438

test CHANGED
@@ -12,9 +12,7 @@
12
12
 
13
13
 
14
14
 
15
-
16
-
17
- df_sps = get_as_dataframe(wks,sheet_name='xxxx1',usecols=[3,4,5,6,7,8,9],skiprows=2, skipcol=3,evaluate_formulas=True)
15
+ df_sps = get_as_dataframe('任意のシート',usecols=['任意'],skiprows='任意', skipcol='任意',evaluate_formulas='任意')
18
16
 
19
17
  df_sps.to_excel('ファイルパス', index=False, header=False)
20
18