1

Тема: VBS. Замена текста в файлах .doc без "Word.Application"

Добрый денёк! Тут конечно всё прекрасно: VBScript: замена текста в документе Word. Но как быть если не установлен MS Office и не имеется такой возможности... Имею возможность скачать и использовать только portable приложения и объекты, либо если это возможно осуществить с помощью объектов OpenOffice, то он установлен. Какие есть варианты?

Стремление - залог успеха

2 (изменено: BeS Yara, 2013-11-12 17:23:14)

Re: VBS. Замена текста в файлах .doc без "Word.Application"

Доброго времени суток.

Сходу пара ссылок: VBScript: работаем с OpenOffice.org через COM, OpenOffice.org software supports Microsoft's Automation technology. Automation Bridge.

Правда дальше чем открыть файл у меня не вышло:


option explicit
Dim objServiceManager, objCoreReflection, objDesktop
Set objServiceManager= WScript.CreateObject("com.sun.star.ServiceManager")
Set objCoreReflection= objServiceManager.createInstance("com.sun.star.reflection.CoreReflection")

Set objDesktop= objServiceManager.createInstance("com.sun.star.frame.Desktop")
Dim objDocument, objText
' http://www.openoffice.org/api/docs/common/ref/com/sun/star/frame/XComponentLoader.html
Set objDocument = objDesktop.loadComponentFromURL(ConvertToURL("D:\aScripts\vbs\tmp\OOoTest.doc"), "_blank", 0, Array())

Function ConvertToURL(ByVal path) 'костыль №1
    ConvertToURL = Replace(path, ":", "|")
    ConvertToURL = Replace(ConvertToURL, " ", "%20")
    ConvertToURL = Replace(ConvertToURL, "\", "/")
    ConvertToURL = "file:///" & ConvertToURL
End Function

Есть инструкция по StarBasic(аналог VBA в OOo), на стр. 55 есть раздел "Searching and replacing". Но подружить то что там описано с выше приведённым скриптом не получилось, натыкаюсь на "Объект не поддерживает это свойство или метод". Правда у меня установлен 4-ый офис, а мануал времён версии 3.4, но думаю не в этом дело - уж больно всё там заковыристо с автоматизацией...

Если желание копать дальше имеется, попробуйте пошерстить форумы 1С-ников, похоже у них чаше возникает необходимость работы с ООо через OLE.

___________добавлено___________
Мануал вообще времён StarOffice, так что проблема может быть и в этом. Но искать актуальную версию документации в данный момент времени нет. Может потом.

3

Re: VBS. Замена текста в файлах .doc без "Word.Application"

Можно попробовать взаимодействовать с .doc файлом с помощью ADODB.Stream, либо с более "удобными" сторонними компонентами, если они доступны. Этот формат (Windows Compound Binary File Format) затронут, например,  тут http://www.tdoc.ru/c/programming/visual … ormat.html, http://www.klerk.ru/soft/articles/2429/, http://habrahabr.ru/post/72745/ (в посте весьма актуальные ссылки). Правда речь идет только о чтении текста. Есть опасения, что возможность записи появится не ранее реализации достаточно трудоемкого проекта для среды WSH.

Щт Уккщк Куыгьу Туче
’ҐЄгй п Є®¤®ў п бва Ёж : 1251

4

Re: VBS. Замена текста в файлах .doc без "Word.Application"

Простите, времени всегда мало, наконец-то могу писать. Просмотрел приведенные ссылки и примеры, и понял что, через ООо всё не сладко.. Тем более, что речь идёт не о простом открытии доков на экран и добавление надписей, а чтении данных (не только текстовых, но и картинок, и прочего) в переменную и подмена некоторого текста (дату, фамилию) и пересохранение не в оконном режиме. Теперь смотрю в сторону скачивания и portable-использования библиотеки, для создания "Word.Application", коли не получается через ООо.

Стремление - залог успеха

5

Re: VBS. Замена текста в файлах .doc без "Word.Application"

В общем смастерил я костыль и пока этим живу: Наваял скрипт на рекурсивный обход с запуском всех необходимых мне доков и написал макрос для события Открытие.

Стремление - залог успеха