内容将会持续更新,有错误的地方欢迎指正,谢谢!
拥有更好的学习体验 —— 不断努力,不断进步,不断探索 |
助力快速掌握 Excel VBA宏的调用 为初学者节省宝贵的学习时间,避免困惑! |
TechX 教程效果:
文章目录
一、Excel运行VBA宏
1、启动开发工具
打开Excel文件,转到"文件">"选项">"自定义功能区"
然后,在" 自定义功能区"部分 的主 选项卡下,选中" 开发工具 "复选框,然后按" 确定"*
2、打开VBA编辑器
在"开发工具"选项卡上,选择"Visual Basic ",打开宏编辑器 。
在宏编辑器中,转到"插入">"模块",打开代码编辑区
3、运行VBA宏
在VBA编辑中输入VBA代码
选择要运行的宏,将光标放在宏内的任意位置,然后按F5,或在菜单上,转到"运行>宏"。
下面以生成一个图表为列,
Sub CreateScatterChartWithLine()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim chartRange As Range
' 设置工作表
Set ws = ThisWorkbook.Sheets("Sheet1")
' 设置图表范围
Set chartRange = ws.Range("A1:B" & ws.Cells(Rows.Count, "A").End(xlUp).Row)
' 创建散点图
Set chartObj = ws.ChartObjects.Add(Left:=200, Width:=1000, Top:=20, Height:=500)
chartObj.Chart.ChartType = xlXYScatterLinesNoMarkers ' 设置图表类型为散点图带直线
' 设置图表数据源
chartObj.Chart.SetSourceData Source:=chartRange
End Sub
下图为使用该宏生成的图表
二、Python运行Excel VBA宏
1、导出VBA宏
在宏编辑器中,转到"文件">"导出文件",对宏进行保存
2、更改宏安全设置
转到"文件">"选项">"信任中心">"信任中心设置"
然后,在" 宏设置"选项卡下,选中" 启用VBA宏 "复选框和勾选" 信任对VBA工程对象模型的访问(V) ",然后按" 确定"*
3、Python运行宏
在运行代码前安装pywin32库
下面的代码打开了一个Excel工作簿,然后将VBA宏导入到Excel文件中,然后运行这个宏
其中excel_file_path为Excel文件路径,vba_macro_file为VBA宏文件路径,宏文件为上文中导出的.bas文件
import win32com.client as win32
def add_and_run_vba_macro(excel_file_path, vba_macro_file):
# 创建一个 Excel 实例
excel = win32.Dispatch("Excel.Application")
excel.Visible = True # 如果需要显示 Excel 界面,可以设置为 True
# 打开 Excel 工作簿
workbook = excel.Workbooks.Open(excel_file_path) # 替换为您的工作簿路径
# 导入 VBA 宏文件
vba_module = workbook.VBProject.VBComponents.Import(vba_macro_file) # 替换为您的宏文件路径
# 运行 VBA 宏
excel.Application.Run("CreateScatterChartWithLine") # 替换为您的宏的名称
# 保存工作簿
workbook.Save()
# 关闭工作簿和 Excel
workbook.Close()
excel.Quit()
三、Python批量化添加VBA宏和运行宏
import os
import tkinter as tk
from tkinter import filedialog
from tkinter import ttk
from ttkthemes import ThemedStyle # 导入ThemedStyle
import win32com.client as win32
# 创建主窗口
root = tk.Tk()
root.title("CSV to Excel Converter")
# 创建并应用主题样式
style = ThemedStyle(root)
style.set_theme("arc") # 选择一个主题,例如"arc"
# 批量为Excel添加VBA宏和执行宏
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宏并运行
add_and_run_vba_macro(excel_path, vba_macro_file)
def add_and_run_vba_macro(excel_file_path, vba_macro_file):
# 创建一个 Excel 实例
excel = win32.Dispatch("Excel.Application")
excel.Visible = True # 如果需要显示 Excel 界面,可以设置为 True
# 打开 Excel 工作簿
workbook = excel.Workbooks.Open(excel_file_path) # 替换为您的工作簿路径
# 导入 VBA 宏文件
vba_module = workbook.VBProject.VBComponents.Import(vba_macro_file) # 替换为您的宏文件路径
# 运行 VBA 宏
excel.Application.Run("CreateScatterChartWithLine") # 替换为您的宏的名称
# 保存工作簿
workbook.Save()
# 关闭工作簿和 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)
# 创建文件选择按钮和标签
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)
# 创建转换按钮
convert_button = ttk.Button(root, text="开始执行", 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进行批量的添加VBA宏并执行宏。
四、打包
安装PyInstaller库
import sys
from PyInstaller.__main__ import run
if __name__ == '__main__':
sys.argv.extend(['--name=CSVToExcelConverter',
'--onefile',
'--windowed',
'main.py']) # 将'your_script.py'替换为实际的应用程序文件名
run()
新建一个build.py文件,在终端中运行python build.py进行打包。
每一次跌倒都是一次成长 每一次努力都是一次进步 |
如果您喜欢本博客,请点赞和分享给更多的朋友,让更多人受益。同时,您也可以关注我的博客,以便及时获取最新的更新和文章。
在未来的写作中,我将继续努力,分享更多有趣、实用的内容。再次感谢大家的支持和鼓励,期待与您在下一篇博客再见!