Пользовательский тип не определен - управление Word из Excel

Я пытаюсь сделать относительно простое копирование и вставку из Excel 2007 в Word 2007. Я просмотрел этот сайт и другие и продолжаю зацикливаться на одном и том же - третья строка в приведенном ниже коде продолжает давать мне " Определено примечание типа пользователя «сообщение об ошибке. Я действительно запутался, так как я только что поднял это из другого решения (и у меня были аналогичные проблемы с другими решениями, которые я пытался поднять). Может ли кто-нибудь рассказать мне, что вызывает ошибку и почему?

Sub ControlWord()
' **** The line below gives me the error ****
Dim appWD As Word.Application
' Create a new instance of Word & make it visible
Set appWD = CreateObject("Word.Application.12")
appWD.Visible = True

'Find the last row with data in the spreadsheet
FinalRow = Range("A9999").End(xlUp).Row
For i = 1 To FinalRow
    ' Copy the current row
    Worksheets("Sheet1").Rows(i).Copy
    ' Tell Word to create a new document
    appWD.Documents.Add
    ' Tell Word to paste the contents of the clipboard into the new document
    appWD.Selection.Paste
    ' Save the new document with a sequential file name
    appWD.ActiveDocument.SaveAs Filename:="File" & i
    ' Close this new word document
    appWD.ActiveDocument.Close
Next i
' Close the Word application
appWD.Quit
End Sub

person Tommy Z    schedule 30.07.2012    source источник
comment
Вам необходимо установить ссылку на библиотеку Word в вашем проекте (вы можете сделать это в редакторе VB в разделе Инструменты ›› Ссылки)   -  person Tim Williams    schedule 31.07.2012
comment
спасибо Тим- никогда не делал этого раньше.   -  person Tommy Z    schedule 31.07.2012
comment
Возможный дубликат ошибки «Тип, определенный пользователем, не определен»   -  person Zev Spitz    schedule 29.12.2016


Ответы (2)


Этот ответ был упомянут в комментарии Тима Вильямса.

Чтобы решить эту проблему, вам необходимо добавить в проект ссылку на библиотеку объектов Word.

Внутри Visual Basic Editor выберите Tools, затем References и прокрутите список вниз, пока не увидите Microsoft Word 12.0 Object Library. Установите этот флажок и нажмите Ok.

С этого момента у вас должно быть включено автозаполнение, когда вы набираете Word., чтобы убедиться, что ссылка установлена ​​правильно.

person ForceMagic    schedule 01.07.2013
comment
Это было исправление! Мы подошли к библиотеке объектов Microsoft Word 16.0. - person Allen J; 26.06.2020
comment
Спасибо! Отличное решение - person Michthan; 15.09.2020

Согласно Каковы различия между использованием ключевое слово New и вызов CreateObject в Excel VBA? либо

  • используйте нетипизированную переменную:

    Dim appWD as Object
    appWD = CreateObject("Word.Application")
    

or

  • Добавьте ссылку на Microsoft Word <version> Object Library в проект VBA через Tools->References..., затем создайте типизированную переменную и инициализируйте ее с оператором VBA New:

    Dim appWD as New Word.Application
    

    or

    Dim appWD as Word.Application
    <...>
    Set appWd = New Word.Application
    
    • CreateObject is equivalent to New here, it only introduces code redundancy

Типизированная переменная предоставит вам автозаполнение.

person ivan_pozdeev    schedule 01.09.2017