从java脚本对vba的编程访问无效

从java脚本对vba的编程访问无效,vba,Vba,目前,我们有一份报告正在运行 用户触发报告 报告以xml格式进行处理和保存 报告完成后,用户可以选择下载报告 当用户单击下载时,将调用一个web服务。 此web服务将打开空白的excel手册 从单独的xml模块(位于服务器中)复制宏 宏处理完成的xml报告并在工作表中显示 当使用Excel2002(SP3)时,这一切都非常好 我们的工作站计划从XP升级到Windows 7。随着Windows7的出现,Excel 2010也随之诞生。 我在infra团队提供的测试机上尝试了整个步骤 测试时,

目前,我们有一份报告正在运行

  • 用户触发报告
  • 报告以xml格式进行处理和保存
  • 报告完成后,用户可以选择下载报告
  • 当用户单击下载时,将调用一个web服务。
  • 此web服务将打开空白的excel手册
  • 从单独的xml模块(位于服务器中)复制宏
  • 宏处理完成的xml报告并在工作表中显示
当使用Excel2002(SP3)时,这一切都非常好

我们的工作站计划从XP升级到Windows 7。随着Windows7的出现,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);
因为Excel2002中只有.xls,所以在任何地方打开Excel时,代码都没有提到扩展名。你知道如何才能做到这一点吗

谢谢,
满足

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

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

52是excel使用的文件类型常量。您可以查看更多详细信息@

以防万一,对于所有MS产品,在您更改设置后,它只有在您关闭应用程序并在下次激活时才会激活。@Larry,谢谢您的评论。已经这么做了。重新启动计算机以确保复选框仍处于选中状态。是否您在访问新创建的文件时遇到问题,因为这些文件通常不是每个人都可以“完全访问”的?可能windows7会阻止服务器的访问。您使用的是.xlsx还是.xslm文件类型。xlsx不允许使用宏模块。@Pynner:请查看问题中我的编辑。代码在打开excel时未提及扩展名。有没有办法打开带有扩展名的新/空白excel工作簿?没有办法。因为报表正在web服务器中运行。我无法让JS在客户端保存excel表。感染,在Office 2002中运行时的报告也没有保存在本地客户端上(他必须手动保存)。嗯,我认为问题与当时的文件格式无关。也许值得一试,看看这是否是问题所在。我现在更倾向于认为它与Windows7安全性有关。您是否有可以试用的XP/Excel 2010计算机?使用Excel 2010在XP中试用,但结果相同。宏没有被复制:(如果可能的话,我会抛出其他东西来尝试,你能直接在服务器上运行代码吗(即客户机就是服务器?)。嗯..他们没有在服务器上安装Office..所以不能尝试。