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

Python運(yùn)行Excel VBA宏的方法實(shí)踐

 更新時間:2025年05月14日 09:33:44   作者:沐沐森的故事  
本文主要介紹了Python運(yùn)行Excel VBA宏的方法實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、Excel運(yùn)行VBA宏

1、啟動開發(fā)工具

打開Excel文件,轉(zhuǎn)到"文件">"選項(xiàng)">"自定義功能區(qū)"

然后,在" 自定義功能區(qū)"部分 的主 選項(xiàng)卡下,選中" 開發(fā)工具 "復(fù)選框,然后按" 確定"*

在這里插入圖片描述

2、打開VBA編輯器

在"開發(fā)工具"選項(xiàng)卡上,選擇"Visual Basic ",打開宏編輯器 。

在宏編輯器中,轉(zhuǎn)到"插入">"模塊",打開代碼編輯區(qū)

在這里插入圖片描述

3、運(yùn)行VBA宏

在VBA編輯中輸入VBA代碼

選擇要運(yùn)行的宏,將光標(biāo)放在宏內(nèi)的任意位置,然后按F5,或在菜單上,轉(zhuǎn)到"運(yùn)行>宏"。

在這里插入圖片描述

下面以生成一個圖表為列,

Sub CreateScatterChartWithLine()
    Dim ws As Worksheet
    Dim chartObj As ChartObject
    Dim chartRange As Range
    
    ' 設(shè)置工作表
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' 設(shè)置圖表范圍
    Set chartRange = ws.Range("A1:B" & ws.Cells(Rows.Count, "A").End(xlUp).Row)
    
    ' 創(chuàng)建散點(diǎn)圖
    Set chartObj = ws.ChartObjects.Add(Left:=200, Width:=1000, Top:=20, Height:=500)
    chartObj.Chart.ChartType = xlXYScatterLinesNoMarkers ' 設(shè)置圖表類型為散點(diǎn)圖帶直線
    
    ' 設(shè)置圖表數(shù)據(jù)源
    chartObj.Chart.SetSourceData Source:=chartRange
End Sub

下圖為使用該宏生成的圖表

在這里插入圖片描述

二、Python運(yùn)行Excel VBA宏

1、導(dǎo)出VBA宏

在宏編輯器中,轉(zhuǎn)到"文件">"導(dǎo)出文件",對宏進(jìn)行保存

在這里插入圖片描述

2、更改宏安全設(shè)置

轉(zhuǎn)到"文件">"選項(xiàng)">"信任中心">"信任中心設(shè)置"

然后,在" 宏設(shè)置"選項(xiàng)卡下,選中" 啟用VBA宏 "復(fù)選框和勾選" 信任對VBA工程對象模型的訪問(V) ",然后按" 確定"*

在這里插入圖片描述

3、Python運(yùn)行宏

在運(yùn)行代碼前安裝pywin32庫

下面的代碼打開了一個Excel工作簿,然后將VBA宏導(dǎo)入到Excel文件中,然后運(yùn)行這個宏

其中excel_file_path為Excel文件路徑,vba_macro_file為VBA宏文件路徑,宏文件為上文中導(dǎo)出的.bas文件

import win32com.client as win32

def add_and_run_vba_macro(excel_file_path, vba_macro_file):
    # 創(chuàng)建一個 Excel 實(shí)例

    excel = win32.Dispatch("Excel.Application")

    excel.Visible = True  # 如果需要顯示 Excel 界面,可以設(shè)置為 True

    # 打開 Excel 工作簿
    workbook = excel.Workbooks.Open(excel_file_path)  # 替換為您的工作簿路徑

    # 導(dǎo)入 VBA 宏文件
    vba_module = workbook.VBProject.VBComponents.Import(vba_macro_file)  # 替換為您的宏文件路徑

    # 運(yùn)行 VBA 宏
    excel.Application.Run("CreateScatterChartWithLine")  # 替換為您的宏的名稱

    # 保存工作簿
    workbook.Save()

    # 關(guān)閉工作簿和 Excel
    workbook.Close()
    excel.Quit()

三、Python批量化添加VBA宏和運(yùn)行宏

import os
import tkinter as tk
from tkinter import filedialog
from tkinter import ttk
from ttkthemes import ThemedStyle  # 導(dǎo)入ThemedStyle
import win32com.client as win32

# 創(chuàng)建主窗口
root = tk.Tk()
root.title("CSV to Excel Converter")

# 創(chuàng)建并應(yīng)用主題樣式
style = ThemedStyle(root)
style.set_theme("arc")  # 選擇一個主題,例如"arc"


# 批量為Excel添加VBA宏和執(zhí)行宏
def batch_add_and_run_vba_macro():
    input_folder = input_folder_var.get()
    vba_macro_file = vba_macro_entry.get()

    # 獲取excel文件列表
    excel_files = [f for f in os.listdir(input_folder) if f.endswith('.xlsx')]

    for i, excel_file in enumerate(excel_files):
        excel_path = os.path.join(input_folder , excel_file)
        root.update()
        # 在Excel文件中添加VBA宏并運(yùn)行
        add_and_run_vba_macro(excel_path, vba_macro_file)

def add_and_run_vba_macro(excel_file_path, vba_macro_file):
    # 創(chuàng)建一個 Excel 實(shí)例

    excel = win32.Dispatch("Excel.Application")

    excel.Visible = True  # 如果需要顯示 Excel 界面,可以設(shè)置為 True

    # 打開 Excel 工作簿
    workbook = excel.Workbooks.Open(excel_file_path)  # 替換為您的工作簿路徑

    # 導(dǎo)入 VBA 宏文件
    vba_module = workbook.VBProject.VBComponents.Import(vba_macro_file)  # 替換為您的宏文件路徑

    # 運(yùn)行 VBA 宏
    excel.Application.Run("CreateScatterChartWithLine")  # 替換為您的宏的名稱

    # 保存工作簿
    workbook.Save()

    # 關(guān)閉工作簿和 Excel
    workbook.Close()
    excel.Quit()


def browse_input_folder():
    folder = filedialog.askdirectory()
    if folder:
        input_folder_var.set(folder)

def browse_vba_macro():
    file_path = filedialog.askopenfilename(filetypes=[("VBA Macro Files", "*.bas")])
    vba_macro_entry.delete(0, tk.END)
    vba_macro_entry.insert(0, file_path)


# 創(chuàng)建文件選擇按鈕和標(biāo)簽
input_folder_label = ttk.Label(root, text="選擇Excel文件夾:")
input_folder_label.grid(row=0, column=0, padx=10, pady=10, sticky="w")
input_folder_var = tk.StringVar()
input_folder_entry = ttk.Entry(root, textvariable=input_folder_var, state="readonly")
input_folder_entry.grid(row=0, column=1, padx=10, pady=10, sticky="ew")
input_folder_button = ttk.Button(root, text="瀏覽", command=browse_input_folder)
input_folder_button.grid(row=0, column=2, padx=5, pady=10)

vba_macro_label = ttk.Label(root, text="選擇VBA宏文件:")
vba_macro_label.grid(row=1, column=0)
vba_macro_var = tk.StringVar()
vba_macro_entry = ttk.Entry(root, textvariable=vba_macro_var, width=40)
vba_macro_entry.grid(row=1, column=1, padx=10)
vba_macro_button = ttk.Button(root, text="瀏覽", command=browse_vba_macro)
vba_macro_button.grid(row=1, column=2)


# 創(chuàng)建轉(zhuǎn)換按鈕
convert_button = ttk.Button(root, text="開始執(zhí)行", command=lambda: batch_add_and_run_vba_macro())
convert_button.grid(row=2, column=0, columnspan=3, pady=20)

root.mainloop()

以上代碼是一個可視化的UI操作界面,該界面允許你選擇一個Excel文件夾和選擇一個VBA宏文件,從而可以對文件夾中的Excel進(jìn)行批量的添加VBA宏并執(zhí)行宏。

四、打包

安裝PyInstaller庫

import sys
from PyInstaller.__main__ import run

if __name__ == '__main__':
    sys.argv.extend(['--name=CSVToExcelConverter',
                     '--onefile',
                     '--windowed',
                     'main.py'])  # 將'your_script.py'替換為實(shí)際的應(yīng)用程序文件名
    run()

新建一個build.py文件,在終端中運(yùn)行python build.py進(jìn)行打包。

到此這篇關(guān)于Python運(yùn)行Excel VBA宏的方法實(shí)踐的文章就介紹到這了,更多相關(guān)Python運(yùn)行Excel VBA宏內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Python高效處理大文件的方法詳解

    Python高效處理大文件的方法詳解

    在這篇文章中,我們將學(xué)習(xí)如何使用multiprocessing、joblib和tqdm?Python包減少大文件的處理時間。這是一個簡單的教程,可以適用于任何文件、數(shù)據(jù)庫、圖像、視頻和音頻,感興趣的可以了解一下
    2022-07-07
  • python爬蟲反爬之圖片驗(yàn)證功能實(shí)現(xiàn)

    python爬蟲反爬之圖片驗(yàn)證功能實(shí)現(xiàn)

    這篇文章主要介紹了python爬蟲反爬之圖片驗(yàn)證功能實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-03-03
  • python中引用和賦值的區(qū)別及說明

    python中引用和賦值的區(qū)別及說明

    在Python中,引用和賦值操作有明顯區(qū)別,引用相當(dāng)于別的語言中的“指針”,多個引用指向同一個對象,修改對象會影響所有引用,而賦值則創(chuàng)建新的對象,原對象的修改不會影響新對象,引用適用于傳遞大型對象,節(jié)省內(nèi)存;賦值則適用于保證對象獨(dú)立性
    2024-09-09
  • ROS系統(tǒng)將python包編譯為可執(zhí)行文件的簡單步驟

    ROS系統(tǒng)將python包編譯為可執(zhí)行文件的簡單步驟

    本文章講述ROS系統(tǒng)下如何將python編譯為可以執(zhí)行文件,步驟比較簡單,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Python如何處理大數(shù)據(jù)?3個技巧效率提升攻略(推薦)

    Python如何處理大數(shù)據(jù)?3個技巧效率提升攻略(推薦)

    這篇文章主要介紹了Python如何處理大數(shù)據(jù)?3個技巧效率提升攻略,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解Python中namedtuple的使用

    詳解Python中namedtuple的使用

    這篇文章主要介紹了Python中namedtuple的使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python的函數(shù)參數(shù)你了解嗎

    python的函數(shù)參數(shù)你了解嗎

    這篇文章主要為大家詳細(xì)介紹了python的函數(shù)參數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • pandas combine_first函數(shù)處理兩個數(shù)據(jù)集重疊和缺失

    pandas combine_first函數(shù)處理兩個數(shù)據(jù)集重疊和缺失

    combine_first是pandas中的一個函數(shù),它可以將兩個DataFrame對象按照索引進(jìn)行合并,用一個對象中的非空值填充另一個對象中的空值,這個函數(shù)非常適合處理兩個數(shù)據(jù)集有部分重疊和缺失的情況,可以實(shí)現(xiàn)數(shù)據(jù)的補(bǔ)全和更新,本文介紹combine_first函數(shù)的語法及一些案例應(yīng)用
    2024-01-01
  • python繼承threading.Thread實(shí)現(xiàn)有返回值的子類實(shí)例

    python繼承threading.Thread實(shí)現(xiàn)有返回值的子類實(shí)例

    這篇文章主要介紹了python繼承threading.Thread實(shí)現(xiàn)有返回值的子類實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 解決pytorch 損失函數(shù)中輸入輸出不匹配的問題

    解決pytorch 損失函數(shù)中輸入輸出不匹配的問題

    這篇文章主要介紹了解決pytorch 損失函數(shù)中輸入輸出不匹配的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論