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

回答編集履歴

2

追記

2020/11/16 07:49

投稿

nto
nto

スコア1438

answer CHANGED
@@ -8,4 +8,35 @@
8
8
  df_sps = get_as_dataframe('任意のシート',usecols=['任意'],skiprows='任意', skipcol='任意',evaluate_formulas='任意')
9
9
  df_sps.to_excel('ファイルパス', index=False, header=False)
10
10
 
11
+ ```
12
+
13
+
14
+ ### binファイルの抽出とExcelファイルへの適用について
15
+ .to_excel()では直接xlsmを生成/上書きする事は出来ません。
16
+ 既存のマクロ有効ブックを上書きするといった場合には
17
+ - 予めバイナリファイルを抽出してく
18
+ - 一旦xlsxで保存
19
+ - その後バイナリファイルを適用
20
+ - xlsmにリネーム
21
+
22
+ という手順を踏む必要があります。バイナリファイルの抽出は以下のコマンドで
23
+ `vbaProject.bin`というマクロが格納されたバイナリファイルが抽出可能です。
24
+ ```
25
+ python C:\Users\ユーザー名\AppData\Local\Programs\Python\Pythonバージョン(適宜)\Scripts\vba_extract.py 抽出したいExcelの絶対パス
26
+ ```
27
+
28
+ binファイルの抽出が出来たら以下の様にして.to_excel()を用いてマクロ有効ブックの保存が可能です。
29
+ ```python
30
+ # 一時的に.xlsxで保存
31
+ writer = pd.ExcelWriter('xxxxx.xlsx', engine='xlsxwriter')
32
+
33
+ df_sps.to_excel(writer, sheet_name='Sheet1')
34
+
35
+ workbook = writer.book
36
+ # マクロ有効ブック形式にリネーム
37
+ workbook.filename = 'xxxxx.xlsm'
38
+ # binファイルを適用
39
+ workbook.add_vba_project('./vbaProject.bin')
40
+
41
+ writer.save()
11
42
  ```

1

訂正

2020/11/16 07:49

投稿

nto
nto

スコア1438

answer CHANGED
@@ -5,8 +5,7 @@
5
5
  from gspread_dataframe import get_as_dataframe
6
6
  import pandas
7
7
 
8
-
9
- df_sps = get_as_dataframe(wks,sheet_name='xxxx1',usecols=[3,4,5,6,7,8,9],skiprows=2, skipcol=3,evaluate_formulas=True)
8
+ df_sps = get_as_dataframe('任意のシート',usecols=['任意'],skiprows='任意', skipcol='任意',evaluate_formulas='任意')
10
9
  df_sps.to_excel('ファイルパス', index=False, header=False)
11
10
 
12
11
  ```