c# - 以编程方式将代码模块导入 Excel 工作簿

标签 c# excel vba

我动态创建工作簿。我想在创建时导入代码模块(Module1.bas)和(UserForm1.frm)。

有没有办法使用工作簿或工作表对象附加此类文件?

Microsoft.Office.Interop.Excel.Workbook wkBk;
Microsoft.Office.Interop.Excel.Worksheet wkSht; 
app = new Microsoft.Office.Interop.Excel.Application();
app = new Microsoft.Office.Interop.Excel.Application();
app.DisplayAlerts = false;
app.Visible = false;
wkBk = app.Workbooks.Open(strFile, oMissing); 
wkSht = (Microsoft.Office.Interop.Excel.Worksheet)wkBk.Sheets.get_Item(2); 
wkBk.Save(); 

最佳答案

以下代码打开一个 Excel 文件,并向其中添加取自磁盘上文件的一个 VBA 模块和一个 VBA 用户表单。

为了使其正常工作,您必须首先打开“信任对 Visual Basic 项目的访问” 设置。它可以在“工具”->“宏”->“安全”中的“受信任的发布者”选项卡上找到。 (这适用于 Excel 2003;对于 2007,可以在 Excel 选项 -> 信任中心 -> 信任中心设置 -> 宏设置中找到)。您需要确保在 Excel 运行的任何位置都启用此设置(与您正在处理的 Excel 文件的存储位置无关)。 (您无法以编程方式更改此设置 - 这将使其成为完全毫无意义的设置)。

$oExcel = ObjCreate("Excel.Application")
    With $oExcel
        .Visible = 0
        .WorkBooks.Open("C:\Excel.xls")
    EndWith

    $oModules = $oExcel.ActiveWorkbook.VBProject.VBComponents
    $oModules.Import("C:\Module1.bas")
    $oModules.Import("c:\Program Files\Microsoft Office\Office11\UserForm1.frm")

关于c# - 以编程方式将代码模块导入 Excel 工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12049894/

相关文章:

mysql - 我无法访问 mysql 数据库中的所有表

vba - 有没有办法在 VBA 的数据验证中操作每个项目?

excel - 使用 VBA 从 Excel 工作表下载 Google Drive 文件

c# - ASP.NET Core Web API - 如何在中间件管道中隐藏 DbContext 事务?

c# - newtonsoft.json 反序列化逻辑

excel - 如何在 range.find 中查找双数据类型

vba - 从 sheet1 列 A、B、C、G、F、R、S、T 复制到列 A、B、C、D、E、F、G、H 中的表 2

c# - 如何使用 LINQ 对列表的列表进行分组(例如 : List<List<int>>)

c# - 如何使用 ASP.NET MVC 返回动态 CSS?

excel - 如何在excel公式中引用行号?