2012-03-28 15 views
4

私は現在、アナリストの設計したピボットテーブルを再現するために(一見無限の)一連のマクロを書く必要があるプロジェクトに取り組んでいます。詳細は変更されていますが、コードの例はほとんど同じです。PythonからExcelマクロを作成/編集することはできますか?

いくつかのオプションに基づいてプログラムでvbaコードを生成し、そのマクロを指定されたワークシートに追加したいとします。 win32comなどを使ってPythonでExcelマクロを作成することは可能ですか?別のExcelマクロからExcelマクロを作成することは可能ですか?他のアイデア?

プロジェクトの背景、私は次のないPythonスクリプトがあります。

  • Googleの分析データを引き出し、さまざまな分析
  • 事前に書かれたマクロをトリガをエクセルに結果を書き込みありませんデータを美しくフォーマットされたピボットテーブルに変換する
  • おそらく実際にはそれを読んでいないと思われる人に電子メールを送ります。
+0

関連:http://stackoverflow.com/questions/1742471/how-to-use-python-win32com-to-save-as-excel-file – JMax

+0

何らかの種類のピボット設定を使用するのではなく、 VBAマクロを作成してからマクロを実行すると、設定を取得して関連するピボットテーブルに直接適用するほうがずっと簡単でしょうか? –

+0

Tim、おそらくはい、提案に感謝します。この作業はすぐにピボットテーブルの領域を超えて拡張されるので、より一般的な解決策が得られるはずです。さらに、私はあまりにも多くのCOMを使用するのに十分明るい/患者であるかどうかはわかりませんが、これを念頭に置いておきます。 – DylanHarper

答えて

1

はい、別のExcelマクロを使用してExcelマクロを作成できます。それが機能するには、ExcelにVBAプロジェクトオブジェクトモデルへのアクセスを信頼するように指示する必要があります。 (設定は、セキュリティセンターのマクロオプションにあります)。私はあなたがPythonからそれを行うことができるかどうかはわかりませんが、可能であれば、おそらくExcelにはOKであることを伝える必要があります。

コーディングを容易にするため、Excelでこれを行う場合は、Micorsoft Visual Basic for Applications Extensibilityへの参照を追加してください。

また、MZ-Tools 3.0をチェックアウトすることもできます。デフォルトの\ commonコードをプロジェクトに追加すると非常に便利です。

一方、あなたのプロジェクトはコード再利用のために熟しているように聞こえます。共通のピボットテーブルコードが1つのクラス/モジュールにある場合は、開いているExcelプロジェクトから別のExcelプロジェクトにコピーするのは簡単です。 (プロジェクトエクスプローラウィンドウでクリックしてドラッグするだけです。)テキストファイルにエクスポートし、後で別のプロジェクトにインポートすることもできます。

関連する問題