3

目前,我们有一个运行的报告

  • 用户触发报告
  • 报告以 xml 格式处理和保存
  • 报告完成后,用户可以选择下载报告
  • 当用户单击下载时,将调用 Web 服务。
    1. 此 Web 服务打开空白的 Excel 书
    2. 从单独的 xml 模块(位于服务器中)复制宏
    3. 宏处理完成的 xml 报告并将其显示在工作表中

使用 Excel 2002 (SP 3) 时,这一切都可以正常工作。

我们的工作站计划从 XP 升级到 Windows 7。Windows 7 附带 Excel 2010。 我在 infra 团队提供的测试机中尝试了整个步骤。

测试时,我们发现 xml 模块中的宏没有被复制到 excel 2010 中。没有错误,也没有警告。

我做了一些搜索,发现需要勾选“信任对 VBA 项目对象模型的访问”。尝试这样做但无济于事。

如果有任何不清楚或需要更多信息,请告诉我。

编辑 1 这是 JS 打开 excel + 添加工作簿 + 添加模块的方式:

xlApp = new ActiveXObject("Excel.Application");
//Add a workbook
xlBook = xlApp.Workbooks.Add;

// This loads the modules into XL from the reporter_modules
var xlMod;
xlMod = xlBook.VBProject.VBComponents.Add(1);
xlMod.CodeModule.AddFromString(xmlModule.childNodes(i).text);

由于 Excel 2002 中只有 .xls,因此在任何地方打开 excel 时代码都不会提及扩展名。你知道如何实现吗?

谢谢,遇见

4

1 回答 1

1

您可以在保存时指定文件类型。这与您发布的代码位于不同的部分。excel 将允许您将 Vba 模块添加到 .xlsx,但会在保存时发出警告(您的 java 代码无疑会抑制)。我不知道 java 语法,但在 Vba 中它是

ActiveWorkbook.SaveAs "C:\ron.xlsm", fileformat:=52 

52 是 excel 使用的文件类型常量。你可以看到更多细节@http ://www.rondebruin.nl/saveas.htm

于 2013-01-09T16:14:38.993 回答