«Ошибка компиляции» - «Требуется объект» Код VBA - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь распечатать документ, однако получаю сообщение об ошибке

'Ошибка компиляции' - 'Требуется объект'

, а затем выделяется строка

Set previousPrinter = objWord.**ActivePrinter**

Я использую следующий код:

Private Sub CommandButton1_Click()

    Dim previousPrinter
    Dim objWord As New Word.Application


    Set previousPrinter = objWord.ActivePrinter
    objWord.ActivePrinter = "Followprint"


    On Error GoTo CLOSE_WORD_APP 'error handling to ensure there will not be any orphaned and invisible Word application left

    Dim doc As Word.Document
    Set doc = objWord.Documents.Open("test.docx")

    doc.Variables("refBook").Value = Me.txtRef.Text
    doc.Fields.Update
    doc.Save

    objDoc.PrintOut
    ' Restore the original printer
    objWord.ActivePrinter = previousPrinter

    doc.Close

CLOSE_WORD_APP:
    objWord.Quit SaveChanges:=False



End Sub

1 Ответ

2 голосов
/ 13 мая 2019

ActivePrinter возвращает строку с именем принтера, а не объекта. Поэтому объявите previousPrinter как строку и просто присвойте ей результат ActivePrinter.

Dim previousPrinter as String
Dim objWord As New Word.Application

previousPrinter = objWord.ActivePrinter
objWord.ActivePrinter = "Followprint"
(...)

В VBA ключевое слово Set используется только для присвоения объекта переменной (например, результат функции Documents.Open). Если вы используете его при попытке назначить что-либо, что не является объектом, компилятор (или среда выполнения) выдаст сообщение об ошибке Object required.

...