最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于python的xlwings與VBA間的互相調(diào)用

 更新時(shí)間:2023年07月06日 11:19:43   作者:西伯利亞的長(zhǎng)頸鹿  
這篇文章主要介紹了關(guān)于python的xlwings與VBA間的互相調(diào)用,VBA是一種通用應(yīng)用軟件腳本語(yǔ)言,Excel包含和許多功能強(qiáng)大的數(shù)據(jù)分析對(duì)象,例如工作表、圖表、數(shù)據(jù)透視表以及大量的數(shù)學(xué)、財(cái)務(wù)、工程和通用業(yè)務(wù)函數(shù),配合VBA可以運(yùn)用這些對(duì)象開發(fā)出自動(dòng)程序

一、知識(shí)儲(chǔ)備

xlwings是一款python操作Excel的庫(kù)??梢酝ㄟ^(guò)python結(jié)合如Pandas,Numpy、等數(shù)據(jù)分析庫(kù),使得數(shù)據(jù)統(tǒng)計(jì)或者數(shù)據(jù)分析更為方便。其最主要的優(yōu)點(diǎn)就是可以與Excel自帶的VBA語(yǔ)言進(jìn)行交互使用。

語(yǔ)法部分可參考之前的筆記:使用Python的xlwings操作Excel的屬性和方法

本次內(nèi)容主要針對(duì)VBA與python之間的交互

二、VBA程序調(diào)用Python代碼

準(zhǔn)備工作

需要先將xlwings操作工具欄嵌入到Excel中去

(1)首先需要知道xlwings包的安裝位置,不知道的話可以通過(guò)查看 xlwings任意函數(shù)的__code__獲取函數(shù)的所在路徑來(lái)找到安裝位置。

import xlwings as xw
app=xw.App(visible=True,add_book=False)#新建工作簿
app.display_alerts=False#關(guān)閉用戶提示
app.screen_updating=False#關(guān)閉屏幕刷新
FilePath=r'example.xlsx'#文件路徑
wb=app.books.open(FilePath)#打開Excel文檔
wb.save('example.xlsx')#另存為
wb.close()#關(guān)閉工作簿
app.quit()#退出Excel
print(wb.save.__code__)

例如這邊的位置在"C:\ProgramData\Anaconda3\envs\Data\lib\site-packages\xlwings"的位置

(2)進(jìn)入addin文件夾,找到xlwings.xlam文檔,雙擊打開(前提是已經(jīng)裝好了Excel VBA)

之后Excel界面便會(huì)增加xlwings工具需要Powershell Prompt上輸入xlwings addin install指令

需要在Excel上永久出現(xiàn)xlwings插件需要在xlwings addin install

 (3)需要先勾選RunPython:Use UDF Server,左邊的interpreter需要填入Python.exe的路徑,PYTHONPATH填入所調(diào)用python腳本文件的路徑(不包括文檔名)如D:\Python\code,UDF Modules填入文檔名,如Test.py注意為.py后綴文件。

當(dāng)然也可以在在PYTHONPATH填入完整路徑如D:\Python\code\Test.py,UDF Modules不填入內(nèi)容。

注意:Python.exe的路徑是指所安裝xlwings庫(kù)所在的Python.exe路徑,路徑下需要存有xlwings的.dll檔

(4)在test.py文件中輸入代碼:

import xlwings as xw
def my_macro():
    wb = xw.Book.caller()#另VBA反選調(diào)用Python函數(shù)
    wb.sheets[0].range('A1').value = 'hello xlwings'

(5)在VBA中添加引用,勾選xlwings

(6)在VBA文件中寫入

Option Explicit
Sub demo()
    RunPython ("from caller import my_macro;my_macro()")
End Sub

(7)運(yùn)行VBA代碼

完成VBA調(diào)用python代碼

(8)或是在Powershell Prompt的界面,輸入xlwings quickstart filename(filename為文件名),即可在路徑下生成一個(gè)文件夾,包含一個(gè).py文件和一個(gè).xlsm文件

 內(nèi)部python代碼為

import xlwings as xw
def main():
    wb = xw.Book.caller()
    sheet = wb.sheets[0]
    if sheet["A1"].value == "Hello xlwings!":
        sheet["A1"].value = "Bye xlwings!"
    else:
        sheet["A1"].value = "Hello xlwings!"
@xw.func
def hello(name):
    return f"Hello {name}!"
if __name__ == "__main__":
    xw.Book("filename.xlsm").set_mock_caller()
    main()

VBA代碼為

Sub SampleCall()
    mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))
    RunPython "import " & mymodule & ";" & mymodule & ".main()"
End Sub

同樣可以完成VBA調(diào)用python程序

三、python xlwings調(diào)用VBA模塊

 (1)python xlwings調(diào)用VBA則簡(jiǎn)單很多,只需找到.xlsm文件,使用macro函數(shù)進(jìn)行調(diào)用即可,如下面例子

python代碼:

import xlwings as xw
app=xw.App(visible=True,add_book=False)
wb=app.books.open(r'example3.xlsm')
wbobject=app.books("example3.xlsm")
marco1=wbobject.macro("模塊1.宏1")
marco1()

 VBA代碼

Option Explicit
Sub 宏1()
    With ThisWorkbook.Worksheets(1)
        .Cells(1, 1).Value = "實(shí)驗(yàn)!"
    End With
End Sub
 

既可完成調(diào)用。 

到此這篇關(guān)于關(guān)于python的xlwings與VBA間的互相調(diào)用的文章就介紹到這了,更多相關(guān)xlwings與VBA調(diào)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文了解Pandas庫(kù)的分組的使用

    一文了解Pandas庫(kù)的分組的使用

    本文介紹了Pandas中的分組操作(groupby)及其應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01
  • Python實(shí)現(xiàn)感知機(jī)(PLA)算法

    Python實(shí)現(xiàn)感知機(jī)(PLA)算法

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)感知機(jī)(PLA)算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python2.7安裝opencv-python很慢且總是失敗問(wèn)題

    python2.7安裝opencv-python很慢且總是失敗問(wèn)題

    這篇文章主要介紹了python2.7安裝opencv-python很慢且總是失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • python中利用Future對(duì)象異步返回結(jié)果示例代碼

    python中利用Future對(duì)象異步返回結(jié)果示例代碼

    future是一種對(duì)象,表示異步執(zhí)行的操作。下面這篇文章主要給大家介紹了關(guān)于python中利用Future對(duì)象異步返回結(jié)果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • Python模塊與包管理使用pip與virtualenv

    Python模塊與包管理使用pip與virtualenv

    本文深入介紹了使用pipenv管理Python項(xiàng)目的依賴關(guān)系和環(huán)境,我們首先從pip和virtualenv開始,介紹了它們的基本功能和用法,然后深入探討了pipenv作為更高級(jí)工具的功能和特性,
    2024-03-03
  • Python實(shí)現(xiàn)一元一次與一元二次方程求解

    Python實(shí)現(xiàn)一元一次與一元二次方程求解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)一元一次與一元二次方程的求解,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • Python自動(dòng)化高效實(shí)現(xiàn)Word文檔的動(dòng)態(tài)創(chuàng)建與管理

    Python自動(dòng)化高效實(shí)現(xiàn)Word文檔的動(dòng)態(tài)創(chuàng)建與管理

    在日常工作中,Word文檔處理占據(jù)了我們大量時(shí)間,ord文檔的動(dòng)態(tài)創(chuàng)建與管理,讓文檔自動(dòng)化成為您的得力助手,本文將深入探討如何利用一個(gè)高效的Python庫(kù),實(shí)現(xiàn)Word文檔的動(dòng)態(tài)創(chuàng)建與管理,感興趣的小伙伴可以了解下
    2025-09-09
  • Python多線程采集二手房源數(shù)據(jù)信息流程詳解

    Python多線程采集二手房源數(shù)據(jù)信息流程詳解

    這篇文章主要介紹了Python多線程采集二手房源數(shù)據(jù)信息流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-05-05
  • 用Python去除圖像的黑色或白色背景實(shí)例

    用Python去除圖像的黑色或白色背景實(shí)例

    今天小編就為大家分享一篇用Python去除圖像的黑色或白色背景實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 詳解Python模塊化編程與裝飾器

    詳解Python模塊化編程與裝飾器

    這篇文章主要介紹了Python模塊化編程與裝飾器的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01

最新評(píng)論

喜德县| 余江县| 乌兰县| 湟中县| 漳州市| 长白| 林甸县| 大渡口区| 岳阳县| 香格里拉县| 寻甸| 教育| 新河县| 金坛市| 枣庄市| 芦山县| 济南市| 和平县| 汉源县| 庆云县| 祁门县| 临沂市| 罗江县| 遂平县| 广汉市| 南澳县| 全南县| 凌源市| 濉溪县| 永安市| 绍兴县| 新田县| 武汉市| 武义县| 哈巴河县| 英吉沙县| 凯里市| 通江县| 马鞍山市| 利辛县| 清水河县|