Java中是否存在允许将预先编写的VBA代码添加到文档中的库? 我有很多文件,我需要在所有文档中插入相同的代码。
我有一个带复选框的测试,我给那些应该回答这个问题的人做了测试,后来计算得分的想法出现在脑海中并写了一些VBA代码,现在我需要包括那个一旦我把它们拿回来,就把所有的测试文件都拿出来。
我正在寻找一个Java库,但如果在Delphi或VB中有更简单的方法,那就太棒了!
提前致谢, 此致,塔哈
答案 0 :(得分:3)
Java COM Automation with Jacob and JBuilder(包含Word示例)
有J-Integra(非免费):Automating Microsoft Word with Java (and J-Integra)
如果你是C#(或VB.NET),它会更容易(加上有成千上万的例子):How to automate Microsoft Word to create a new document by using Visual C#
答案 1 :(得分:2)
我已经使用docx4j(Java)和VSTO Word加载项(C#,OpenXML SDK)将宏注入到现有docx中。
这是docx4j代码(最近没有测试过):
// Add our macro to the document
// Get vbaProject.bin, and attach it to wordDocumentPart
java.io.InputStream is = ResourceUtils.getResource("docm/vbaProject.bin");
VbaProjectBinaryPart vbaProject = new VbaProjectBinaryPart();
vbaProject.setBinaryData(is);
wordDocumentPart.addTargetPart(vbaProject);
// Get /word/vbaData.xml, and attach it to vbaProject
VbaDataPart vbaData = new VbaDataPart();
java.io.InputStream is2 = ResourceUtils.getResource("docm/vbaData.xml");
vbaData.setDocument( is2 );
vbaProject.addTargetPart( vbaData);
// Change the Word document's content type!
wordDocumentPart.setContentType( new ContentType(
ContentTypes.WORDPROCESSINGML_DOCUMENT_MACROENABLED ) );
ContentTypeManager ctm = p.getContentTypeManager();
PartName partName = wordDocumentPart.getPartName();
ctm.removeContentType( partName );
ctm.addOverrideContentType( new java.net.URI("/word/document.xml"),
ContentTypes.WORDPROCESSINGML_DOCUMENT_MACROENABLED);
答案 2 :(得分:1)
我认为你可能会比以往更难。除非我误解你并且你不会在你的计算机上使用这些文件,否则你将要回来的文件不包含任何代码并不重要。如果您将代码保存在Word模板中,则只需将该模板添加到Word的启动目录中,并且在启动Word时宏将自动加载。除非您更改了位置,否则它应该是以下文件夹:
%APPDATA%\Microsoft\Word\STARTUP\
如果您没有将代码保存在模板中,那很好。打开包含代码的Word文档,点击F12(或转到“另存为”),然后将“另存为类型”字段更改为文档模板。默认情况下,Word将目录更改为存储Normal.dot模板的文件夹。只需将其更改为我在上面引用的STARTUP文件夹并保存(或将其保存到桌面并随后将其移至桌面)。要稍后编辑代码,请右键单击该文件并选择“编辑”。 (默认情况下,如果您只是双击它,Windows将使用模板的设置启动新的Word文档。)