1

Тема: VBS: Ошибка при добавлении нового свойства в документ Word 2010

Необходимо добавить новое пользовательское свойство в новый документ Word 2010. Запуск скрипта выполняется из 1С v7.

Процедура Установить()
    Попытка
        ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
        ScrptCtrl.Language="vbscript";

        ScrptCtrl.AddCode("
        |Sub SetProp()
        |    Set MSWord = CreateObject(""Word.Application"")
        |    MSWord.Documents.Add
        |    MSWord.Visible = True
        |    MSWord.ActiveDocument.CustomDocumentProperties.Add ""Application2"", False, msoPropertyTypeNumber, 99
        |End Sub
        |");

        ScrptCtrl.Run ("SetProp");
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
КонецПроцедуры

При вызове процедуры получаю сообщение 1С: "Ошибка выполнения Microsoft VBScript: Недопустимый вызов или аргумент процедуры", оно относится к оператору "MSWord.ActiveDocument.CustomDocumentProperties.Add".

Код самого скрипта нормально работает в VBA

Sub SetProp()
    Set MSWord = CreateObject("Word.Application")
    MSWord.Documents.Add
    MSWord.Visible = True
    MSWord.ActiveDocument.CustomDocumentProperties.Add "Application2", False, msoPropertyTypeNumber, 99
End Sub

Таким образом, по синтаксису и составу параметров все должно быть верно. Но не работает.

2

Re: VBS: Ошибка при добавлении нового свойства в документ Word 2010

А переменная msoPropertyTypeNumber где-нибудь определена?

3

Re: VBS: Ошибка при добавлении нового свойства в документ Word 2010

YMP пишет:

А переменная msoPropertyTypeNumber где-нибудь определена?

Спасибо большое! Я считал msoPropertyTypeNumber предопределенной константой. После замены на числовое значение все заработало.

    |    MSWord.ActiveDocument.CustomDocumentProperties.Add ""Application2"", False, 1, 99

Не подскажете, как использовать в скриптах предопределенные константы MS Office не заменяя их числами?

4

Re: VBS: Ошибка при добавлении нового свойства в документ Word 2010

Не подскажете, как использовать в скриптах предопределенные константы MS Office не заменяя их числами?

WSH: пишем сценарии в формате WSF

5

Re: VBS: Ошибка при добавлении нового свойства в документ Word 2010

sidnet1964 пишет:

Не подскажете, как использовать в скриптах предопределенные константы MS Office не заменяя их числами?

Думаю, только определив их в коде скрипта как переменные. Интерпретатор VBScript ничего не знает про константы VBA.

Не знаю, впрочем, на что намекает alexii; может, я чего-то не догоняю.

6

Re: VBS: Ошибка при добавлении нового свойства в документ Word 2010

YMP, на это:

Элемент <reference>

Обеспечивает доступ к мнемоническим константам, определённым в библиотеке типов нужного объекта (экземпляр объекта при этом не создаётся). Это позволяет не запоминать числовые значения констант, к которым постоянно нужно обращаться при написании кода.

Атрибут object задаёт программный идентификатор объекта. При необходимости можно указать версию объекта в атрибуте version. Вместо программного идентификатора объекта можно использовать глобальный код его библиотеки типов, задав его в атрибуте guid.

Например:

    <reference object="Scripting.FileSystemObject"/>

    s = ForReading

7

Re: VBS: Ошибка при добавлении нового свойства в документ Word 2010

alexii пишет:
    <reference object="Scripting.FileSystemObject"/>

    s = ForReading

alexii, спасибо!
Не хочется сильно отдаляться от 1С, но стоит попробовать.
Интересно, что же использовать в качестве объекта в данном примере?

<reference object="Word.Application"/>

8

Re: VBS: Ошибка при добавлении нового свойства в документ Word 2010

Не хочется сильно отдаляться от 1С

В 1С Вы этого не сделаете. Ни напрямую, ни через ScriptControl.