欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、知識儲備

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

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

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

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

準(zhǔn)備工作

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

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

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界面便會增加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庫所在的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為文件名),即可在路徑下生成一個文件夾,包含一個.py文件和一個.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則簡單很多,只需找到.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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)Const詳解

    Python實(shí)現(xiàn)Const詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)Const的方法的相關(guān)資料,需要的朋友可以參考下
    2015-01-01
  • Jupyter notebook 遠(yuǎn)程配置及SSL加密教程

    Jupyter notebook 遠(yuǎn)程配置及SSL加密教程

    這篇文章主要介紹了Jupyter notebook 遠(yuǎn)程配置及SSL加密教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Java與Python兩大幸存者誰更勝一籌呢

    Java與Python兩大幸存者誰更勝一籌呢

    Python起源于一種腳本語言,它的語法體現(xiàn)了一種可讀性的理念,具有簡單而規(guī)則的界限,鼓勵簡潔和一致的代碼布局,而Java是一種面向?qū)ο笳Z言,其吸引力和價值所在是其具有的可移植性和相對效率。下面通過本文了解下java python 誰更勝一籌
    2018-04-04
  • python3實(shí)現(xiàn)SMTP發(fā)送郵件詳細(xì)教程

    python3實(shí)現(xiàn)SMTP發(fā)送郵件詳細(xì)教程

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)SMTP發(fā)送郵件的詳細(xì)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 對python opencv 添加文字 cv2.putText 的各參數(shù)介紹

    對python opencv 添加文字 cv2.putText 的各參數(shù)介紹

    今天小編就為大家分享一篇對python opencv 添加文字 cv2.putText 的各參數(shù)介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python迭代器,生成器詳解

    python迭代器,生成器詳解

    這篇文章主要介紹了Python中的迭代器和生成器,涉及到Python中很多重要的特性,小編覺得這篇文章寫的還不錯,需要的朋友可以參考下
    2021-10-10
  • tensorflow模型的save與restore,及checkpoint中讀取變量方式

    tensorflow模型的save與restore,及checkpoint中讀取變量方式

    這篇文章主要介紹了tensorflow模型的save與restore,及checkpoint中讀取變量方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python+Jmeter實(shí)現(xiàn)自動化性能壓測的流程步驟

    Python+Jmeter實(shí)現(xiàn)自動化性能壓測的流程步驟

    性能測試是一個全棧工程師/架構(gòu)師必會的技能之一,只有學(xué)會性能測試,才能根據(jù)得到的測試報告進(jìn)行分析,找到系統(tǒng)性能的瓶頸所在,而這也是優(yōu)化架構(gòu)設(shè)計中重要的依據(jù),本文給大家介紹了Python+Jmeter實(shí)現(xiàn)自動化性能壓測的流程步驟,需要的朋友可以參考下
    2024-05-05
  • Python編程基礎(chǔ)之輸入與輸出

    Python編程基礎(chǔ)之輸入與輸出

    這篇文章主要為大家介紹了Python輸入與輸出,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 基于Django的樂觀鎖與悲觀鎖解決訂單并發(fā)問題詳解

    基于Django的樂觀鎖與悲觀鎖解決訂單并發(fā)問題詳解

    這篇文章主要介紹了基于Django的樂觀鎖與悲觀鎖解決訂單并發(fā)問題詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07

最新評論