C#调用Excel宏
- using System;
- using Excel = Microsoft.Office.Interop.Excel;
- namespace WindowsFormsApplication1
- {
- /// <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 + ];
- paraObjects[] = macroName;
- for (int i = ; i < paraLength; i++)
- paraObjects[i + ] = 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;
- }
- }
- }
使用方法
- app = new Microsoft.Office.Interop.Excel.Application();
- app.Visible = true;
- string filePath = @"F:\test.xlsm";
- Workbook wb = app.Workbooks.Open(filePath);
- object objRtn = new object();
- // 执行指定Excel中的宏,执行时显示Excel
- ExcelMacroHelper excelMacroHelper = new ExcelMacroHelper();
- excelMacroHelper.RunExcelMacro(app,"hong",new Object[] { "现在时刻" },out objRtn);
- MessageBox.Show(objRtn.ToString());
在Excel中新增“模块”
- Function hong(title As String)
- Dim ws As Worksheet
- Set ws = ThisWorkbook.Worksheets("Sheet1")
- ws.Cells(, ).Value = title & ",123"
- hong = title & ",123"
- End Function
C#调用Excel宏的更多相关文章
- 调用Excel宏批量处理文件
'1.用户可以任意选择文件夹进行遍历 '2.限定遍历时仅搜索EXCEL文件(你可以改变文件类型) '这个程序要先在“引用”下选择"microsoft scripting runtime&qu ...
- C# 调用 Excel 宏的方法
调用方式是使用 Microsoft.Office.Interop.Excel.dll 组件来调用,该组件可以通过 Excel.exe 来生成,具体步骤如下: 第一步,进入 visual Studio ...
- C#调用Excel VBA宏
近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有Excel中写VBA的,也有直接C#做的工具.有时需要在C#中执行Excel VBA宏,甚至有时还需要在执行了VBA宏之后,获取返回值再进 ...
- C#调用Excel VBA宏[转载]
原文地址:https://www.cnblogs.com/heekui/archive/2008/03/30/1129355.html 近日的一系列工作是做网站的营运维护,因此做了大量的支持工具.有E ...
- 功能区按钮调用Excel、PowerPoint、Word中的VBA宏:RunMacro
功能区按钮调用Excel.PowerPoint.Word中的VBA宏:RunMacro 众所周知,Excel.PPT.Word文档或加载宏文件中可以写很多过程和函数,调试的过程中当然可以按F8或F5直 ...
- 使用vbs调用excel中的宏
使用vbs打开excel文件,并且传递参数调用excel中的macro,自动化完成excel文件的制作. Set oExcel = createobject("Excel.Applicati ...
- Ruby调用Excel相关的函数
require 'win32ole'myexcel = WIN32OLE.new("excel.application")#WIN32OLE.open 方法打开用例文件,用Call ...
- c#调用Excel绘制图表
c#调用Excel需要引用命名空间 using Microsoft.Office.Interop.Excel; 由于该程序不复杂,主要是根据不同数据画表和图,画的图像也并不复杂,因为画图和画表的操作会 ...
- C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)
C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT) private Microsoft.Office.Intero ...
随机推荐
- String,StringBuilder和StringBuffer的特点和使用场景
这三个类是平时开发中经常遇到的,主要差别是运行速度和线程安全,使用起来String最方便了,另外两个稍微复杂一些. 从运行速度角度看,StringBuilder>StringBuffer> ...
- 表单提交时编码类型enctype详解
很早以前,当还没有前端这个概念的时候,我在写表单提交完全不去理会表单数据的编码,在action属性里写好目标URL,剩下的啊交给浏览器吧~但是现在,更多时候我们都采用Ajax方式提交数据,这种原始的方 ...
- winform 窗体换皮肤,IrisSkin2.dll的用法
1. 先把IrisSkin2.dll文件添加到当前项目引用(解决方案资源管理器->当前项目->引用->右键->添加引用,找到IrisSkin2.dll文件.....之后就不用我 ...
- matlab reshape()、full()
一.reshape() 对于这个函数,就是重构矩阵. (1)要求:重构前后的矩阵元素个数一致.如3*4矩阵可以重构成2*6,2*3*2等. (2)重构方法:先按列将矩阵转换为向量,然后在向量的基础之上 ...
- HDU 1234:开门人和关门人
开门人和关门人 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- CTF中图片隐藏文件分离方法
CTF中图片隐藏文件分离方法 0x01 分析 这里我们以图片为载体,给了这样的一样图片:2.jpg 首先我们需要对图片进行分析,这里我们需要用到kali里面的一个工具 binwalk ,想要了解这 ...
- 《DSP using MATLAB》Problem 3.6
逆DTFT定义如下: 需要求积分,
- list.stream().parallel() 并行流
https://blog.csdn.net/u011001723/article/details/52794455/ : parallel()其实就是一个并行执行的流.它通过默认的ForkJoin ...
- streamsets 集成 cratedb 测试
我们可以集成crate 到streamsets 中可以实现强大的数据导入,数据分析能力. 演示的是进行csv 文件的解析并输出到cratedb 环境使用docker && docker ...
- ORA-01791: not a SELECTed expression
Student表有3个字段:id,name,age 看这两个SQL语句 (1)select name from student order by id; (2)select distinct(name ...