有没有办法将VBAmacros代码添加到Excel中?

我有一个现有的macros函数的问题,所以我要做的就是传递一个macros到Excel我的意思是添加函数(EX:a())为Excel,并运行function(“一()”)添加。

注:我有Excel的path,我将不得不添加macros。 请明确答案。

这个怎么做??

提前致谢。

  • 安装Primary Interop Assemblies Redistributable for your office version
  • 添加对Assemblies – > Extensions的引用 – > Microsoft.Office.Interop.Excel和Microsoft.VBE.Interop

    using System; using System.Diagnostics; using System.Windows.Forms; using Microsoft.Vbe.Interop; using ExcelInterop = Microsoft.Office.Interop.Excel; namespace WindowsFormsApplication1 { public partial class AddExcelMacro : Form { public AddExcelMacro() { InitializeComponent(); AddMacro(); } public void AddMacro() { try { // open excel file const string excelFile = @"c:\temp\VBA\test.xlsm"; var excelApplication = new ExcelInterop.Application { Visible = true }; var targetExcelFile = excelApplication.Workbooks.Open(excelFile); // add standart module to file var newStandardModule = targetExcelFile.VBProject.VBComponents.Add(vbext_ComponentType.vbext_ct_StdModule); var codeModule = newStandardModule.CodeModule; // add vba code to module var lineNum = codeModule.CountOfLines + 1; var macroName = "Button1_Click"; var codeText = "Public Sub " + macroName +"()" + "\r\n"; codeText += " MsgBox \"Hi from Excel\"" + "\r\n"; codeText += "End Sub"; codeModule.InsertLines(lineNum, codeText); targetExcelFile.Save(); // run the macro var macro = string.Format("{0}!{1}.{2}", targetExcelFile.Name, newStandardModule.Name, macroName); excelApplication.Run(macro); excelApplication.Quit(); } catch (Exception ex) { Debug.WriteLine(ex.Message); throw; } } } }