2017-09-22 35 views
3

私は、膨大な量のVBAとボタンを含むマクロを持つExcelスプレッドシートを持っています。excelの外でvbaマクロを実行する方法

ExcelでVBAコードを実行するにはどうすればよいですか?(たとえば、ボタンをクリックしてonclickイベントをトリガする)外部のコードはPythonなどのExcelから実行できますか?

注::私はC++、C#、Javaなどのさまざまな言語で回答したいと思います。しかし、はるかに私はpythonでそれを好むでしょう。それは私のpythonアプリケーションの残りの部分とよりスムーズに接続するからです。

注2:私は、Excelのpythonのいずれかを使用してのpythonとExcelのスプレッドシートを操作する必要があるかもしれません使用可能なライブラリ

バージョン番号:

Microsoft Excel Office 365 Version 1708 Build 8431.2079 
python 2.7 

答えて

1

をワークブック・オープン・イベントを必要とする、そう、このようなものでしょう:あなたはまた、使用して同じことを達成することができますPython xlwingsパッケージ。本質的にxlwingsは、より簡単な構文でExcelアプリケーションを制御できるpywin32の周りの素晴らしいラッパーです。次のPythonコードは、dylanの答えと同じコードを使用する必要があります。

import xlwings as xw 

# Connect to existing workbook containing VBA macro 
wb = xw.Book(r'C:\YourBookHere.xlsm') 

# Run the VBA macro named 'MacroName' 
wb.macro('MacroName')() 
5

あなたはと対話するwin32comライブラリを使用することができますPythonによるCOMオブジェクト。あなたはpipでwin32comライブラリをインストールすることができます。それが私が少なくともそれをした方法です。基本的には、ワークシート上のボタンをクリックするのではなく、VBAコードに埋め込まれたサブルーチンを呼び出してワークシート上で実行します。

また、私はこれにPython 3.6を使用しましたが、私はPython 2.7と互換性があると信じています。ここに基本的な概要があります。

インストールWin32Com

オープンアップして、コマンドプロンプトやタイプ:

pip install pypiwin32 

コード

import win32com.client as win32 

excel = win32.Dispatch("Excel.Application") # create an instance of Excel 
#excel.Visible = 1 #Uncomment this to show Excel working through the code 
book = excel.Workbooks.Open(Filename=r'C:\YourBookHere.xlsm') 
excel.Run("YourBookHere.xlsm!Sheet1.MacroName") # This runs the macro that is on Sheet1 
book.Save() 
book.Close() 
excel.Quit() 

希望これは、これが私の最初の投稿です、助けます。 編集:クリーンアップしたもの少し

0

さらに、Windowsタスクスケジューラを使用してイベントを発生させることもできます。ボタンクリックイベントがコードを起動する場合は、以下のリンクの指示に従って、まったく同じことを行うことができます。

https://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html

また、あなたはディランの優れた解答時に展開するには...

Private Sub Workbook_Open() 
Msgbox "Welcome to ANALYSIS TABS" 
End Sub 
関連する問題