Сценарий Word от VBS - PullRequest
       14

Сценарий Word от VBS

0 голосов
/ 21 октября 2018

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

set obj = GetObject(,"Word.Application)
With obj
    With .Selection
        MsgBox .text
        If (.Information(wdWithInTable) = True) Then

            .Collapse Direction:=wdCollapseStart
            tCols = .Tables(1).Columns.Count
            tRow = .Information(wdStartOfRangeRowNumber)
            tCol = .Information(wdStartOfRangeColumnNumber)

            For I = 2 To 5
                .Tables(1).Cell(tRow, I).Range.Text = "fred" & Str(I)
            Next

            ` now make new row
            For I = 1 To tCols - tCol + 1
                .MoveRight unit:=wdCell
            Next

        End If
    End With
End With

У меня три проблемы.Во-первых, он не скомпилируется, если я не закомментирую строки .Collapse и .MoveRight.Во-вторых, хотя MsgBox .text отображает выделенный текст, я получаю ошибки «вне диапазона», если пытаюсь получить доступ к любому свойству .Information.

Я уверен, что упускаю что-то очень простое: яобычно пишу программное обеспечение для Mac, и я бы делал это, используя AppleScript.Это моя первая попытка что-нибудь сделать под Windows.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Поскольку ваш код не выполняется в среде Word, потребуется ссылка на библиотеку объектов Word, чтобы использовать константы перечисления (те, которые начинаются с wd).

VBScript, однако, не может работать со ссылками, что означает, что единственная возможность - использовать long эквивалентные значения перечислений.Вы найдете их в справочниках по языку слов.Самым простым в использовании, вероятно, является Object Browser в редакторе VBA Word.(В Word: Alt + F11, чтобы открыть редактор VBA; F2, чтобы запустить обозреватель объектов; введите термин в поле «Поиск», щелкните термин, а затем посмотрите на нижнюю панель.)

Код в вопросе использует, например:

wdWithInTable
wdCollapseStart
wdStartOfRangeRowNumber
wdStartOfRangeColumnNumber
wdCell

Причина, по которой вы получаете различные виды ошибок, зависит от того, где они используются.

Кроме того, VBScript не может использовать именованные параметры, такие как Unit:=.Любые параметры должны быть переданы в формате с разделителями-запятыми, если их больше одного, в порядке, указанном методом или свойством.Если есть необязательные параметры, которые вы не хотите использовать, их следует оставить пустыми:

MethodName parameter, parameter, , , parameter
0 голосов
/ 21 октября 2018

VBScript и VBA - это разные языки.

Они немного похожи, но не очень.Более того, VBScript не , как AppleScript;он не позволяет вам легко взаимодействовать с запущенными программами.

Интерфейсы, которые вы получаете от VBScript, могут вести себя немного по-разному в VBA и VBScript.Тем не менее, я думаю, у вас есть две проблемы:

  • := - недопустимый синтаксис в VBScript;вам нужно найти альтернативный способ вызова функции.Попробуйте просто использовать позиционные аргументы.
  • У вас нет гарантии, что это откроет ожидаемый файл;вместо этого может быть другой экземпляр Word, с которым он взаимодействует.
...