2

我动态创建一个工作簿。我想在创建时导入代码模块(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(); 
4

1 回答 1

5

下面的代码打开一个 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")
于 2012-08-21T07:26:08.550 回答