当前位置: 首页 > news >正文

C# 执行Excel VBA宏工具类

写在前面

在Excel文档的自动化处理流程中,有部分值需要通过已定义的宏来求解,所以延伸出了用C# 调用Excel中的宏代码的需求。

首先要从NuGet中引入Microsoft.Office.Interop.Excel 类库

 using Excel = Microsoft.Office.Interop.Excel;

代码实现

   /// <summary>/// 执行Excel VBA宏帮助类/// </summary>public class ExcelMacroHelper{/// <summary>/// 执行Excel中的宏/// </summary>/// <param name="excelFilePath">Excel文件路径</param>/// <param name="macroName">宏名称</param>/// <param name="parameters">宏参数组</param>/// <param name="rtnValue">宏返回值</param>public void RunExcelMacro(Excel.Application app, string macroName, object[] parameters, out object rtnValue){// 根据参数组是否为空,准备参数组对象object[] paraObjects;if (parameters == null)paraObjects = new object[] { macroName };else{int paraLength = parameters.Length;paraObjects = new object[paraLength + 1];paraObjects[0] = macroName;for (int i = 0; i < paraLength; i++)paraObjects[i + 1] = parameters[i];}rtnValue = this.RunMacro(app, paraObjects);}/// <summary>/// 执行宏/// </summary>/// <param name="oApp">Excel对象</param>/// <param name="oRunArgs">参数(第一个参数为指定宏名称,后面为指定宏的参数值)</param>/// <returns>宏返回值</returns>private object RunMacro(object app, object[] oRunArgs){object objRtn;     // 声明一个返回对象// 反射方式执行宏objRtn = app.GetType().InvokeMember("Run", System.Reflection.BindingFlags.Default | System.Reflection.BindingFlags.InvokeMethod, null, app, oRunArgs);return objRtn;}}

http://www.lryc.cn/news/240961.html

相关文章:

  • acwing算法基础之数学知识--求组合数基础版
  • SpringBoot中的classpath都包含啥
  • 新王加冕,GPT-4V 屠榜视觉问答
  • python之TCP的网络应用程序开发
  • Axios 拦截器 请求拦截器 响应拦截器
  • Mysql Shell笔记
  • Hive日志默认存储在什么位置?
  • Kafka 常用功能总结(不断更新中....)
  • 单链表相关面试题--5.合并有序链表
  • SV-7042VP sip广播4G无线网络号角
  • 基于OpenCV+MediaPipe的手势识别
  • YOLO目标检测——无人机航拍行人检测数据集下载分享【含对应voc、coc和yolo三种格式标签】
  • 数据提取PDF SDK的对比推荐
  • 【数据结构(C语言)】浅谈栈和队列
  • 【NGINX--5】身份验证
  • 【网络奇缘】- 计算机网络|分层结构|ISO模型
  • 使用whisper实现语音转文本
  • Django中间件与csrf
  • 【搜维尔科技】产品推荐:Virtuose 6D RV,大型工作空间触觉设备
  • <JavaEE> 什么是线程(Thread)?进程和线程有什么区别?
  • 【赠书第7期】从零基础到精通Flutter开发
  • 《golang设计模式》第三部分·行为型模式-07-观察者模式(Observer)/发布者—订阅者模式
  • Maven中常用命令以及idea中使用maven指南
  • 深度学习之八(生成对抗网络--Generative Adversarial Networks,GANs)
  • 内部网关协议_路由信息协议RIP_开放路径优先OSPF协议_基本知识
  • Linux python安装 虚拟环境 virtualenv
  • 洛谷 P1883 函数
  • 【C++心愿便利店】No.14---C++之探索list底层原理
  • 【广州华锐互动】VR防溺水安全内容体验提高群众防溺水意识
  • 【Skynet 入门实战练习】游戏模块划分 | 基础功能模块 | timer 定时器模块 | logger 日志服务模块