2012-05-31 53 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