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 ...
随机推荐
- 打开WORD文档出错提示
打开WORD文档出错提示: Microsoft Office Word 遇到问题需要关闭.我们对此引起的不便表示抱歉. 您正在处理的信息有可能丢失.Microsoft Office Word 可以尝试 ...
- vue 兼容360及safari的方法
1. npm install --save-dev babel-polyfill 2. main.js 中 import "babel-polyfill"; 或者: ...
- django中的ajax组件
目录 django中的ajax 向服务器发送请求的途径 Ajax的特点 基于jquery实现的ajax请求 利用ajax实现计算器 利用ajax实现登陆认证 利用form表单进行文件上传 利用ajax ...
- 一个两年Java的面试总结
前言 16年毕业到现在也近两年了,最近面试了阿里集团(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...最终有幸去了网易.但是 ...
- css怎么让li水平排列和div居中
让li向左浮动即可 给div定一个宽度,然后margin:0 auto;即可:
- U-Boot_bmp_logo_hacking
/*********************************************************************** * U-Boot_bmp_logo_hacking * ...
- [LeetCode&Python] Problem 561. Array Partition I
Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1 ...
- win8转win7+真正解决 “安装程序无法定位现有系统分区,也无法创建新的系统分区”的方法
问题情况:win8电脑转win7系统,出现问题:“安装程序无法定位现有系统分区,也无法创建新的系统分区” 第一种:猜测可行的方法: 1.老毛桃U盘启动电脑,进入PE系统后,直接使用Diskgeni ...
- Loj 2008 小凸想跑步
Loj 2008 小凸想跑步 \(S(P,p_0,p_1)<S(P,p_i,p_{i+1})\) 这个约束条件对于 \(P_x,P_y\) 是线性的,即将面积用向量叉积表示,暴力拆开,可得到 \ ...
- HDU 1010:Tempter of the Bone(DFS+奇偶剪枝+回溯)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...