我正在从模板创建工作簿。模板中已包含所需的代码模块。我试图获得一个代码模块的引用,代码需要导入到的代码模块(代码总是不同的,因此.bas文件不会在这里工作,因为会有数百个)。
我可以使用
轻松访问新的代码模块var codeModule = excelWorkbook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
但是我需要在实例化的工作簿变量
中访问现有的“Methods”代码模块 //initialize the Excel application and make it invisible to the user.
var excelApp = new Excel.Application
{
UserControl = false,
Visible = false
};
//Create the Excel workbook and worksheet - and give the worksheet a name.
var excelWorkbook = excelApp.Workbooks.Open(TemplateFilePath);
excelWorkbook.Author = Acknowledgements.Author;
var bookPath = excelWorkbook.Path;
//add the macro code to the excel workbook here in the Methods module.
//this adds a new module, how do I access an existing one?
var codeModule = excelWorkbook.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
我可以循环遍历模块并通过测试名称相等来获取它,但必须有一种方法可以在一行代码中检索它。
答案 0 :(得分:3)
使用Item集合的VBComponents方法按名称或数字索引检索现有VBComponent:
VBIDE.VBComponent component = excelWorkbook.VBProject.VBComponents.Item("Methods");
VBIDE.CodeModule module = component.CodeModule;