2011-07-02 81 views
0

Java中是否存在允許將預先寫入的VBA代碼添加到文檔中的庫? 我有很多文件,而且我需要在所有文檔中插入相同的代碼。將VBA腳本添加到Office Word文檔

我有一個測試複選框,我給測試給那些應該回答這個問題的人,後來計算分數的想法浮現在腦海,寫了一點VBA代碼,現在我需要包括所有的測試文件,一旦我把他們拿回來。

我正在尋找一個Java庫,但是如果在Delphi或VB中有這樣一個更簡單的方法,那就太棒了!

由於提前, 問候,塔哈

+0

您是否必須使用Java?像你這樣的連接會花費更多的時間來嘗試使用Java,而不是使用更多的本地語言。 –

+0

你有什麼建議? C#或VB?感謝您的回答。 – PhoenixNoor

+0

你能舉一個你想要完成的例子嗎?我仍然不清楚最佳答案。 –

回答

2

我已經使用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); 
+0

但是,您如何從「vbaProject.bin」和「vbaData.xml」文件中獲取? – PhoenixNoor

+0

解壓縮包含感興趣的VBA宏的docx(或d​​otx模板)。 – JasonPlutext

+0

感謝您的回答,我將docx4j-2.6.0.jar庫添加到我的項目中,我發現除了一個之外的所有類的相應軟件包,wordDocumentPart未知。 – PhoenixNoor

3

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#

+0

那麼,你如何在裏面添加VBA?有誰知道 ? – PhoenixNoor

+0

裏面有什麼?一個單詞文件? –

+0

是的,這就是我想要的,在Microsoft Word文檔中添加VBA代碼。 – PhoenixNoor

1

我想你可能會使得這個難度比它必須是。除非我誤解,並且您不會在計算機上使用這些文檔,否則返回的文檔不包含任何代碼並不重要。如果將代碼保存在Word模板中,則只需將該模板添加到Word的啓動目錄中,然後在啓動Word時將自動加載該宏。除非你改變了它的位置,它應該是以下文件夾:

%APPDATA%\Microsoft\Word\STARTUP\ 

如果你沒有保存在一個模板的代碼,這很好。打開具有該代碼的Word文檔,按F12(或轉到「另存爲」),並將「另存爲類型」字段更改爲文檔模板。默認情況下,Word會將目錄更改爲存儲Normal.dot模板的文件夾。只需將其更改爲上面引用的STARTUP文件夾並保存即可(或將其保存到桌面並在此後移動)。要稍後編輯代碼,請右鍵單擊該文件並選擇「編輯」。 (默認情況下,Windows將使用模板的設置啓動一個新的Word文檔,如果您只需雙擊它即可。)

+0

這正是我所做的。非常感謝 ! – PhoenixNoor

+0

很酷。我很高興能夠提供幫助。 – Mike

相關問題