xlwings:操作Excel稀轨,通過宏調(diào)用Python(VBA調(diào)Python)

xlwings - 讓Excel飛起來

image

說明:我的xlwings版本是0.11.5冰单。老一點的版本可能需要經(jīng)過額外的設(shè)置,其excel插件才能用霎终。

xlwings是一個python的庫滞磺,支持從Excel調(diào)用Python,也支持通過Python去操作Excel神僵。

官方說明雁刷、網(wǎng)上的文章已經(jīng)有很多了。

官方網(wǎng)站:xlwings官網(wǎng)

文檔鏈接:xlwings文檔

這里總結(jié)如何從Excel通過加一個Macro(宏)保礼,點擊一個按鈕來調(diào)用Python,從而實現(xiàn)對Excel的操作责语。

需求:通過點擊Excel中的一個按鈕炮障,通過VBA調(diào)用Python代碼,實現(xiàn)對Excel的操作坤候。

我的環(huán)境:Win 10 64位胁赢,Excel 2016, Python 3.6(我安裝的是Anaconda 3智末,64 位,有pip工具)

案例:點擊一個按鈕徒河,單元格A1中出現(xiàn)Hello系馆,world由蘑!

效果圖

image.png

基本流程
假設(shè)我的py代碼都寫好了(后面當(dāng)然要用)

# -*- coding: utf-8 -*-
 
import xlwings as xw
 
 
def say_hi():
    
    wb = xw.Book.caller()
    sht = wb.sheets[0]
    sht.range('A1').value = 'Hello, world'
  1. Excel裳擎,開啟對宏(macro)的支持恃轩。

  2. Excel筷厘,顯示開發(fā)工具選項卡摊溶。

  3. Excel骤铃,保存為啟用宏的工作簿惰爬。

  4. 安裝xlwings喊暖,并測試安裝成功。

  5. Excel补鼻,顯示xlwings選項卡哄啄,這樣才可以在Excel中通過VBA執(zhí)行py和用戶自定義函數(shù)(UDF)雅任。

  6. 配置python編譯器路徑,以及執(zhí)行的py文件路徑

  7. 在VBA中咨跌,寫一個宏(執(zhí)行py文件的say_hi函數(shù))沪么。插入按鈕,并綁定該宏

  1. 開啟宏支持

Excel 文件 - 選項 - 信任中心 - 宏設(shè)置 - 啟用所有宏


image.png
image.png
image.png
  1. 顯示“開發(fā)工具”選項卡

Excel選項 - 自定義功能區(qū) - 開發(fā)工具(勾選)


image.png

至此锌半,出現(xiàn)了開發(fā)工具的選項卡禽车。


image.png
  1. 保存為啟用宏的工作簿 (*.xlsm)


    image.png
  2. 安裝xlwings,并測試安裝成功


    image.png
image.png
  1. 讓Excel顯示xlwings選項卡


    image.png

Excel - 開發(fā)工具 - 查看代碼刊殉,打開 VBA

工具 - 引用殉摔,勾選xlwings

注意:你會發(fā)現(xiàn),根本就沒有xlwings這個選項记焊。

找到xlwings的addin文件夾逸月,打開xlwings.xlam文件,自然就出現(xiàn)了xlwings選項卡了遍膜。

此時再勾選xlwings碗硬。


image.png
image.png
image.png
image.png

勾選RunPython: Use UDF Server

這樣一旦執(zhí)行py的話,會啟一個黑窗口瓢颅,此后執(zhí)行py速度要比不勾選快

應(yīng)該是不需要每次運行的時候都加載py文件了

但是這樣的話恩尾,修改了py文件,需要把黑窗口關(guān)掉挽懦,重新導(dǎo)入

其實感覺就相當(dāng)于是Debug模式還是Release模式

image.png

再到VBA中對勾選xlwings的支持翰意。


image.png
  1. 配置編譯器路徑,需要執(zhí)行的py文件路徑


    image.png

interpreter:編譯器信柿,找到python.exe(我的是anaconda 3冀偶, 一步到位)


image.png

PYTHONPATH:py文件路徑


image.png
  1. 寫宏,插入按鈕角塑,綁定宏
Sub hi()

    RunPython ("from xw import say_hi; say_hi()")

End Sub
image.png

開發(fā)工具 - 插入 - 表單控件(按鈕)

編輯文字蔫磨,指定宏


image.png

最后,點擊按鈕圃伶,Done!


image.png
image.png
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒲列,一起剝皮案震驚了整個濱河市窒朋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝗岖,老刑警劉巖侥猩,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抵赢,居然都是意外死亡欺劳,警方通過查閱死者的電腦和手機(jī)唧取,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來划提,“玉大人枫弟,你說我怎么就攤上這事∨敉” “怎么了淡诗?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伊履。 經(jīng)常有香客問我韩容,道長,這世上最難降的妖魔是什么唐瀑? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任群凶,我火速辦了婚禮,結(jié)果婚禮上哄辣,老公的妹妹穿的比我還像新娘请梢。我一直安慰自己,他們只是感情好柔滔,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布溢陪。 她就那樣靜靜地躺著,像睡著了一般睛廊。 火紅的嫁衣襯著肌膚如雪形真。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天超全,我揣著相機(jī)與錄音咆霜,去河邊找鬼。 笑死嘶朱,一個胖子當(dāng)著我的面吹牛蛾坯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疏遏,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼脉课,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了财异?” 一聲冷哼從身側(cè)響起倘零,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎戳寸,沒想到半個月后呈驶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡疫鹊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年袖瞻,在試婚紗的時候發(fā)現(xiàn)自己被綠了司致。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡聋迎,死狀恐怖脂矫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砌庄,我是刑警寧澤羹唠,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站娄昆,受9級特大地震影響佩微,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萌焰,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一哺眯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扒俯,春花似錦奶卓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掌猛,卻和暖如春盏浙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荔茬。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工废膘, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慕蔚。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓丐黄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親孔飒。 傳聞我的和親對象是個殘疾皇子灌闺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354