您的位置:首页 > 编程语言 > C#

C#调用Excel的宏

2009-04-03 10:30 162 查看
用到了三个组件

using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using VBIDE = Microsoft.Vbe.Interop;

因为涉及到大批量的Excel文件的处理

首先 先要把文本文件中保存的vba函数倒入到Excel中 手动倒入,假设有几千个Excel 将会窒息

假设 "1.txt"文件内容为

Sub DeleteLink()
Cells.Hyperlinks.Delete
End Sub

将文本文件写到一个str中 此str比较特殊,因为要按照vba的格式写 我们必须考虑回车换行 再者 假如文件中存在双引号,我们还要特殊处理

Code
Code
Excel.Application app = null;
Excel.Workbook workBook = null;
VBIDE.VBComponent vbComponent = null;

string strCode;
Object oMissing = System.Reflection.Missing.Value;
Object missing = System.Reflection.Missing.Value;
app = new Microsoft.Office.Interop.Excel.ApplicationClass();
workBook = app.Workbooks._Open("c:\\aaaa.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);

vbComponent = workBook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
#region
strCode = "Sub ceshi()\r\n" +
"Cells.Hyperlinks.Delet\r\n"+
"End Sub";

#endregion

vbComponent.CodeModule.AddFromString(strCode);

try
{
app.Run("ceshi", missing, missing,

missing, missing, missing, missing, missing, missing, missing,

missing, missing, missing, missing, missing, missing, missing,

missing, missing, missing, missing, missing, missing, missing,

missing, missing, missing, missing, missing, missing, missing);

}
catch
{
GC.Collect();
}
app.Visible = true;
app.UserControl = true;
vbComponent = null;
workBook = null;
app = null;
GC.Collect();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐