10

これは少し大げさかもしれませんが、pythonwin またはその他のモジュールを使用して、Python スクリプトを使用して MS Excel (または VBA を使用するその他の MS Office 製品) で VBA を作成できる可能性はありますか?

このアイデアの由来は、pythons openpyxl モジュールが列の自動幅を実行できないことでした。私が持っているスクリプトは、メモリ内にワークブックを作成し、最終的にディスクに保存します。かなりの数のシートがあり、各シート内にはかなりの数の列があります。私は考え始めました....Pythonを使用してVBAスクリプト(メモ帳などに保存されたもの)をExcelのVBAエディターにインポートし、pythonwinを使用してPythonからそのスクリプトを実行するとどうなりますか。

何かのようなもの:

Workbooks.worksheets.Columns("A:Z").EntireColumn.Autofit

コメントする前に、はい、openpyxl で列の自動調整を回避する方法の多くの pythonic の例を見てきましたが、python では利用できない可能性がある VBA から取得した機能を利用する興味深い機会がいくつか見られます。

とにかく、私はインターネットを少し掘り下げましたが、私ができることを示すものは何も見られなかったので、尋ねてみようと思いました.

乾杯、マイク

4

2 に答える 2

8

はい、可能です。その Microsoft KBで、VB から VBA マクロを生成する方法を調べ始めることができます。

以下の Python コードは、同じことができる方法を示しています。これは、KB サンプル コードの前半の基本的な移植です。

import win32com.client as win32

import comtypes, comtypes.client

xl = win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
ss = xl.Workbooks.Add()
sh = ss.ActiveSheet

xlmodule = ss.VBProject.VBComponents.Add(1)  # vbext_ct_StdModule

sCode = '''sub VBAMacro()
       msgbox "VBA Macro called"
      end sub'''

xlmodule.CodeModule.AddFromString(sCode)

表示されている自動化された Excel マクロを見ると、VBAMacro上記で定義されていることがわかります。

于 2013-10-21T22:56:08.503 に答える