Добавить сценарий VBA в документы Office Word - PullRequest
0 голосов
/ 02 июля 2011

Есть ли в Java библиотека, позволяющая добавлять в документ предварительно написанный код VBA?У меня много файлов, и мне нужен один и тот же код для вставки во все документы.

У меня есть тест с флажками, я дал тест людям, которые должны на него ответить, ипозже пришла в голову идея подсчета очков и я написал немного кода на VBA, теперь мне нужно включить его во все тестовые документы, как только я их верну.

Я ищу библиотеку Java, но если есть более простой способ сделать это в Delphi или VB, это было бы здорово!

Заранее спасибо, С уважением, Таха

Ответы [ 3 ]

3 голосов
/ 02 июля 2011

Java COM Automation с Джейкобом и JBuilder (содержит пример Word)

Есть J-Integra (не бесплатно): Автоматизация Microsoft Word с Java (и J-Integra )

Если вы C # (или VB.NET), это будет гораздо проще (плюс тысячи примеров): Как автоматизировать Microsoft Word для создания нового документа с помощью Visual C #

2 голосов
/ 04 июля 2011

Я внедрил макрос в существующий docx, используя docx4j (Java) и через надстройку Word VSTO (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);
1 голос
/ 14 октября 2011

Я думаю, вы можете сделать это сложнее, чем должно быть. Если только я не неправильно понял, и вы не будете использовать документы на своем компьютере, не имеет значения, что документы, которые вы получите, не содержат никакого кода. Если у вас есть код, сохраненный в шаблоне Word, вам просто нужно добавить этот шаблон в каталог запуска Word, и ваши макросы будут автоматически загружаться при запуске Word. Если вы не изменили его местоположение, это должна быть следующая папка:

%APPDATA%\Microsoft\Word\STARTUP\

Если у вас нет кода, сохраненного в шаблоне, это нормально. Откройте документ Word с кодом, нажмите F12 (или перейдите к «Сохранить как») и измените поле «Сохранить как тип» на Шаблон документа . По умолчанию Word изменит каталог на папку, в которой хранится шаблон Normal.dot. Просто измените его в папку «STARTUP», на которую я ссылался выше, и сохраните ее (или сохраните на рабочем столе и переместите ее туда позже). Чтобы отредактировать код позже, щелкните файл правой кнопкой мыши и выберите «Изменить». (По умолчанию Windows запускает новый документ Word с использованием настроек шаблона, если вы просто дважды щелкнете по нему.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...