2012-05-31 112 views
1

我有一个我一直在研究的VBA工具栏。它有两个按钮,并且在进程结束时,它调用一个python脚本。 我想要做的是取决于哪个按钮被点击,python脚本的某个部分将运行,所以我想传递一个链接到按钮的值,然后发送到python脚本并运行。如何将VBA的值传递给python

我该怎么做?

感谢

+0

你如何运行Python脚本?通过一个新的命令行进程? –

+0

Martijn,在VBA代码中,我有以下'code'Shell“C:\ Python25 \ python.exe”“H:\ Report_v7.py” – MapMan

回答

1

你可以通过命令行选项python脚本,就像您可以与其他命令行程序。根据按下哪个按钮,将不同的开关传递给您的程序。

在你的情况,很可能只是最简单的一种在一个价值传递根据按钮的命令行被按下并从sys.argv变量挑这个:

import sys 

def fooClicked(): 
    # Stuff to do when Foo was clicked 

def barClicked(): 
    # Stuff to do when Bar was clicked 

button = sys.argv[1] 
if button == 'foo': 
    fooClicked() 
elif button == 'bar': 
    barClicked() 

(你可以使用的字典查找方法,但这可能太先进了,不知道你对Python有多么舒服)。

因此,如果您使用python.exe H:\Report_v7.py foo调用此脚本,fooClicked函数将被调用。

如果这将增长到不止两个按钮,我会使用optparse模块来定义您的选项并根据所选选项运行不同的代码路径。

如果您升级到Python 2.7,请改用新(更好)的argparse模块。

+0

非常感谢,我已经得到它的工作。 – MapMan