Java中是否存在允許將預先寫入的VBA代碼添加到文檔中的庫? 我有很多文件,而且我需要在所有文檔中插入相同的代碼。將VBA腳本添加到Office Word文檔
我有一個測試複選框,我給測試給那些應該回答這個問題的人,後來計算分數的想法浮現在腦海,寫了一點VBA代碼,現在我需要包括所有的測試文件,一旦我把他們拿回來。
我正在尋找一個Java庫,但是如果在Delphi或VB中有這樣一個更簡單的方法,那就太棒了!
由於提前, 問候,塔哈
Java中是否存在允許將預先寫入的VBA代碼添加到文檔中的庫? 我有很多文件,而且我需要在所有文檔中插入相同的代碼。將VBA腳本添加到Office Word文檔
我有一個測試複選框,我給測試給那些應該回答這個問題的人,後來計算分數的想法浮現在腦海,寫了一點VBA代碼,現在我需要包括所有的測試文件,一旦我把他們拿回來。
我正在尋找一個Java庫,但是如果在Delphi或VB中有這樣一個更簡單的方法,那就太棒了!
由於提前, 問候,塔哈
我已經使用docx4j(Java)將一個宏注入到現有的docx中,並且v ia VSTO Word加載項(C#,OpenXML SDK)。
這裏是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);
但是,您如何從「vbaProject.bin」和「vbaData.xml」文件中獲取? – PhoenixNoor
解壓縮包含感興趣的VBA宏的docx(或dotx模板)。 – JasonPlutext
感謝您的回答,我將docx4j-2.6.0.jar庫添加到我的項目中,我發現除了一個之外的所有類的相應軟件包,wordDocumentPart未知。 – PhoenixNoor
Java COM Automation with Jacob and JBuilder(包含文字的例子)
有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#
那麼,你如何在裏面添加VBA?有誰知道 ? – PhoenixNoor
裏面有什麼?一個單詞文件? –
是的,這就是我想要的,在Microsoft Word文檔中添加VBA代碼。 – PhoenixNoor
我想你可能會使得這個難度比它必須是。除非我誤解,並且您不會在計算機上使用這些文檔,否則返回的文檔不包含任何代碼並不重要。如果將代碼保存在Word模板中,則只需將該模板添加到Word的啓動目錄中,然後在啓動Word時將自動加載該宏。除非你改變了它的位置,它應該是以下文件夾:
%APPDATA%\Microsoft\Word\STARTUP\
如果你沒有保存在一個模板的代碼,這很好。打開具有該代碼的Word文檔,按F12(或轉到「另存爲」),並將「另存爲類型」字段更改爲文檔模板。默認情況下,Word會將目錄更改爲存儲Normal.dot模板的文件夾。只需將其更改爲上面引用的STARTUP文件夾並保存即可(或將其保存到桌面並在此後移動)。要稍後編輯代碼,請右鍵單擊該文件並選擇「編輯」。 (默認情況下,Windows將使用模板的設置啓動一個新的Word文檔,如果您只需雙擊它即可。)
這正是我所做的。非常感謝 ! – PhoenixNoor
很酷。我很高興能夠提供幫助。 – Mike
您是否必須使用Java?像你這樣的連接會花費更多的時間來嘗試使用Java,而不是使用更多的本地語言。 –
你有什麼建議? C#或VB?感謝您的回答。 – PhoenixNoor
你能舉一個你想要完成的例子嗎?我仍然不清楚最佳答案。 –