Dim app as word application ошибка

  • Remove From My Forums
  • Вопрос

  • Здравствуйте!

    Подскажите в чем ошибка. пытаюсь сделать в форме кнопку при нажатии которой должен открыться документ в Word.

    при нажатии появляется ошибка «Compile error: User defined — type not defined»  и выделяется строчка

    Code Snippet

      Dim app As Word.Application

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

      Спасибо за помощь, заранее!

Ответы

  • В редакторе VB выберите Tools->References и в открывшемся окне поставьте галку напротив Microsoft Word <версия>

I am trying to do some relatively simple copy and pasting from Excel 2007 into Word 2007. I’ve looked through this site and others, and keep getting hung up on the same thing- the third line n the code below keeps giving me the «User type note defined» error msg. I am really confused since I just lifted this from another solution (and had similar issues with other solutions I tried to lift). Could someone please educate me on what is causing the error, and why?

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

SeanC's user avatar

SeanC

15.7k5 gold badges45 silver badges67 bronze badges

asked Jul 30, 2012 at 20:13

Tommy Z's user avatar

3

This answer was mentioned in a comment by Tim Williams.

In order to solve this problem, you have to add the Word object library reference to your project.

Inside the Visual Basic Editor, select Tools then References and scroll down the list until you see Microsoft Word 12.0 Object Library. Check that box and hit Ok.

From that moment, you should have the auto complete enabled when you type Word. to confirm the reference was properly set.

Community's user avatar

answered Jul 1, 2013 at 19:24

ForceMagic's user avatar

ForceMagicForceMagic

6,23012 gold badges66 silver badges88 bronze badges

2

As per What are the differences between using the New keyword and calling CreateObject in Excel VBA?, either

  • use an untyped variable:

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

or

  • Add a reference to Microsoft Word <version> Object Library into the VBA project via Tools->References..., then create a typed variable and initialize it with the VBA New operator:

    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

A typed variable will give you autocomplete.

answered Sep 1, 2017 at 17:27

ivan_pozdeev's user avatar

ivan_pozdeevivan_pozdeev

34k19 gold badges107 silver badges152 bronze badges

 

postrelll

Пользователь

Сообщений: 7
Регистрация: 28.03.2016

#1

02.09.2016 12:23:58

Добрый день, столкнулся со следующей проблемой в 2016 офисе.

Есть макрос, выполняющий роль заполнялки документов по шаблону. Выполняется макрос из excel файлика, среди шаблонов есть Word документы, соответсвенно приходится в самом макросе оперировать с этими word объектами через Word.Application. Макрос корректно работал на версии офиса 2010 и младше. Сейчас установили 2016 офис и возникла проблема — при выполнении одной из строк кода возникает ошибка

Код
Run-Time Error 4605
Данная команда недоступна

Начальная инициализация

Код
Dim WordApp As Object

Set WordApp = CreateObject("Word.Application")
With WordApp
        .Visible = False
        .WindowState = wdWindowStateNormal
        .ScreenUpdating = False
End With

Проблемная функция

Код
Private Sub WordReplacement(word_selection As String, _
                            replacement_text As String, _
                            appobject As Object)
                             
    appobject .Application.Selection.Find.ClearFormatting
    appobject .Application.Selection.Find.Replacement.ClearFormatting

    With appobject.Application.Selection.Find
        .Text = word_selection
        .Replacement.Text = replacement_text
        appobject .Application.Selection.Find.Execute Replace:=wdReplaceAll
    End With

Проблемная строка на которой светится ошибка 4605

Код
 appobject .Application.Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Буду рад любой помощи

 

The_Prist

Пользователь

Сообщений: 14413
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

А на этой строке нет ошибки?
.WindowState = wdWindowStateNormal
точно? Зачем Вам позднее связывание, если внутри кода напихали констант ворда?
Советую ознакомиться:

Как из Excel обратиться к другому приложению

проблема в том, что Excel ничего не знает о константах Word-а, в том числе и про эту: wdReplaceAll

Изменено: The_Prist02.09.2016 12:29:09

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

postrelll

Пользователь

Сообщений: 7
Регистрация: 28.03.2016

#3

02.09.2016 12:43:05

The_Prist
Да, все верно, именно поэтому приходится в начале инициализировать экземпляр объекта Word.Application
.WindowState = wdWindowStateNormal — на эту строку не ругается
Инициализация объекта Word.Application идет в самом начале макроса. Если я убираю вот эту строку из кода

Код
appobject .Application.Selection.Find.Execute Replace:=wdReplaceAll

То макрос выполняется без ошибок. Шаблон с Word документом сохраняется с нужным мне именем. Однако нужных мне замен в этом шаблоне не производится.

ПОдключенные библиотеки

 

Hugo

Пользователь

Сообщений: 23698
Регистрация: 22.12.2012

#4

02.09.2016 12:48:58

Вместо констант пишите явно значение этих констант.

Код
Const wdReplaceAll = 2
    Member of Word.WdReplace

Изменено: Hugo02.09.2016 13:00:20

 

postrelll

Пользователь

Сообщений: 7
Регистрация: 28.03.2016

Проблема решена  — поменял формат шаблонов на .docx и переместил их с системного диска в документы пользователя.

 

The_Prist

Пользователь

Сообщений: 14413
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#6

02.09.2016 13:51:39

Цитата
postrelll написал: Проблема решена

не хотите Вы прислушиваться и читать…Она обязательно может всплыть в другой раз. Т.к. библиотека Word 16 может не подхватиться на более ранних.
Сказать, почему макрос выполняется без ошибок? потому что все остальные переменные Word-а, возможно, тупо как 0 воспринимаются, т.к. директива Option Explicit не объявлена. И это тоже может повлечь свои ошибки.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

postrelll

Пользователь

Сообщений: 7
Регистрация: 28.03.2016

The_Prist
Да, я понимаю значение директивы Option Explicit.
Макрос выполняется корректно и результат так же корректен.

Проблема была в «безопасном режиме» шаблона, который открывался. В моем случае макрос открывал шаблон из указанного пути. В шаблоне в цикле делал замены в нужные места документов и затем сохранял шаблон под определенным именем. Ошибка изначально была связана с тем, что при открытии шаблона в безопасном режиме его невозможно редактировать, соответственно и делать замены в нём так же нельзя. А этот безопасный режим появился только в 2016 офисе (возможно и в 2013 он так же есть), поскольку в 2010 все открывалось нормально в обычном режиме. Стоит так же сказать, что шаблоны были в .doc формате для лучшей совместимости с более старыми офисами, поскольку макросом пользуются на самых разных ПК. Из-за этого и выползала ошибка.

Плюс я изначально все шаблоны загонял в отдельную папку на диске С.  Учитывая, что макрос сейчас запускается из-под WIn 10, проблему так же создавала встроенная защита системы, поскольку она любит подтверждать через UAC все процедуры перезаписи/удаления. Поэтому и перенес папку с шаблонами в документы пользователя.

Изменено: postrelll02.09.2016 17:05:03

 

Сергей Редькин

Пользователь

Сообщений: 1
Регистрация: 11.07.2021

#8

19.01.2022 08:58:23

У меня была похожая проблема со вставкой неформатированных значений из ячеек в размеченные закладками места в Word. Ошибки периодически вылазили на этой строке:

Код
.Application.Selection.PasteAndFormat (wdFormatPlainText)

Перенос файла шаблона в папку шаблонов по умолчанию не помог. Насколько понимаю проблемы возникают при вызове функций Word из VBA, запущенном в Excel, но до конца в причинах я так и не разобрался. Заменил Copy/Paste на вставку значения текстовой переменной. Самое интересное, что один Selection.Copy / Selection.PasteAndFormat (wdFormatPlainText) в самом конце макроса работает корректно, но как только вставляю в макрос несколько — вылазят ошибки.

Код
Sub CreateLetter()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim SaveAsName As String

Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True

Set wdDoc = wdApp.Documents.Add(Template:="C:\____.dotx", NewTemplate:=False, DocumentType:=0)

With wdDoc
       
    Text = Cells(6, 2).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Должность"
    .Application.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    .Application.Selection.InsertAfter (Text)
       
    Text = Cells(6, 1).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Организация"
    .Application.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    .Application.Selection.InsertAfter (Text)

    Text = Cells(6, 3).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Кому"
    .Application.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    .Application.Selection.InsertAfter (Text)
    
    Text = Cells(6, 4).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Обращение"
    .Application.Selection.InsertAfter (Text)
           
    Text = Cells(2, 11).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Должность_подписант"
    .Application.Selection.InsertAfter (Text)
    
    Text = Cells(2, 10).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Подписант"
    .Application.Selection.InsertAfter (Text)
    
    Text = Cells(1, 10).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Исполнитель"
    .Application.Selection.InsertAfter (Text)
    
    Text = Cells(1, 11).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Телефон"
    .Application.Selection.InsertAfter (Text)
    
    ActiveSheet.PivotTables("Заезжающие").PivotSelect _
        "'[#Inbox люди].[Фамилия Имя Отчество].[Фамилия Имя Отчество]'[All]", _
        xlLabelOnly + xlFirstRow, True
    Selection.Copy
    .Application.Selection.Goto wdGoToBookmark, , , "Список"
    .Application.Selection.PasteAndFormat (wdFormatPlainText)
    
    .SaveAs2 Filename:=("D:\_______ & Format(Now, "yyyy-mm-dd hh-mm-ss") & ".docx"), _
    FileFormat:=wdFormatXMLDocument, AddtoRecentFiles:=False
    
    .Close
End With

wdApp.Quit

End Sub

Изменено: Сергей Редькин19.01.2022 10:39:43

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Private Sub Выгрузка_Click()
On Error GoTo Err_Выгрузка_Click
 
Dim dDate As Date
    Dim z2000_010_04, z2000_010_05, z2000_010_06, z2000_010_07, z2000_010_08, z2000_010_09, z2000_010_10, z2000_010_11, z2000_010_12, z2000_010_13, z2000_010_14, z2000_010_15, z2000_010_16, z2000_010_17, z2000_010_18, z2000_010_19, z2000_010_20, z2000_010_21, z2000_010_22, z2000_010_23, z2000_010_24, z2000_010_25, z2000_010_26 As String
 
  
'Получаем шаблон — теперь из базы данных
 
    Dim oBOF As BoundObjectFrame
    Set oBOF = Otch.Controls("OLEObject1")
    oBOF = DLookup("[Шаблон]", "Шаблон", "[КодШаблон] = 1")
    oBOF.Verb = acOLEVerbOpen
 
     oBOF.Action = acOLEActivate
 
  
'Получаем ссылки на запущенный нами Word и открытый в нем документ
 
    Dim oWord As Object
    Set oWord = CreateObject("Word.Application")
    app.Visible = True
    app.Documents.Add strPathDot
    oWord.Visible = True
    oWord.ActiveWindow.WindowState = wdWindowStateMaximize
    oDoc.Activate
 
  
'Вставляем данные в закладки
    oDoc.Bookmarks.Item("z2000_010_04").Range.Text = Nz(z2000_010_04, "")
    oDoc.Bookmarks.Item("z2000_010_05").Range.Text = Nz(z2000_010_05, "")
    oDoc.Bookmarks.Item("z2000_010_06").Range.Text = Nz(z2000_010_06, "")
    oDoc.Bookmarks.Item("z2000_010_07").Range.Text = Nz(z2000_010_07, "")
    oDoc.Bookmarks.Item("z2000_010_08").Range.Text = Nz(z2000_010_08, "")
    oDoc.Bookmarks.Item("z2000_010_09").Range.Text = Nz(z2000_010_09, "")
    oDoc.Bookmarks.Item("z2000_010_10").Range.Text = Nz(z2000_010_10, "")
    oDoc.Bookmarks.Item("z2000_010_11").Range.Text = Nz(z2000_010_11, "")
    oDoc.Bookmarks.Item("z2000_010_12").Range.Text = Nz(z2000_010_12, "")
    oDoc.Bookmarks.Item("z2000_010_13").Range.Text = Nz(z2000_010_13, "")
    oDoc.Bookmarks.Item("z2000_010_14").Range.Text = Nz(z2000_010_14, "")
    oDoc.Bookmarks.Item("z2000_010_15").Range.Text = Nz(z2000_010_15, "")
    oDoc.Bookmarks.Item("z2000_010_16").Range.Text = Nz(z2000_010_16, "")
    oDoc.Bookmarks.Item("z2000_010_17").Range.Text = Nz(z2000_010_17, "")
    oDoc.Bookmarks.Item("z2000_010_18").Range.Text = Nz(z2000_010_18, "")
    oDoc.Bookmarks.Item("z2000_010_19").Range.Text = Nz(z2000_010_19, "")
    oDoc.Bookmarks.Item("z2000_010_20").Range.Text = Nz(z2000_010_20, "")
    oDoc.Bookmarks.Item("z2000_010_21").Range.Text = Nz(z2000_010_21, "")
    oDoc.Bookmarks.Item("z2000_010_22").Range.Text = Nz(z2000_010_22, "")
    oDoc.Bookmarks.Item("z2000_010_23").Range.Text = Nz(z2000_010_23, "")
    oDoc.Bookmarks.Item("z2000_010_24").Range.Text = Nz(z2000_010_24, "")
    oDoc.Bookmarks.Item("z2000_010_25").Range.Text = Nz(z2000_010_25, "")
    oDoc.Bookmarks.Item("z2000_010_26").Range.Text = Nz(z2000_010_26, "")
 
     DoCmd.OpenReport stoWord, acdDate
 
Exit_Выгрузка_Click:
    Exit Sub
 
Err_Выгрузка_Click:
    MsgBox Err.Description
    Resume Exit_Выгрузка_Click
    
End Sub
 

postrelll

Пользователь

Сообщений: 7
Регистрация: 28.03.2016

#1

02.09.2016 12:23:58

Добрый день, столкнулся со следующей проблемой в 2016 офисе.

Есть макрос, выполняющий роль заполнялки документов по шаблону. Выполняется макрос из excel файлика, среди шаблонов есть Word документы, соответсвенно приходится в самом макросе оперировать с этими word объектами через Word.Application. Макрос корректно работал на версии офиса 2010 и младше. Сейчас установили 2016 офис и возникла проблема — при выполнении одной из строк кода возникает ошибка

Код
Run-Time Error 4605
Данная команда недоступна

Начальная инициализация

Код
Dim WordApp As Object

Set WordApp = CreateObject("Word.Application")
With WordApp
        .Visible = False
        .WindowState = wdWindowStateNormal
        .ScreenUpdating = False
End With

Проблемная функция

Код
Private Sub WordReplacement(word_selection As String, _
                            replacement_text As String, _
                            appobject As Object)
                             
    appobject .Application.Selection.Find.ClearFormatting
    appobject .Application.Selection.Find.Replacement.ClearFormatting

    With appobject.Application.Selection.Find
        .Text = word_selection
        .Replacement.Text = replacement_text
        appobject .Application.Selection.Find.Execute Replace:=wdReplaceAll
    End With

Проблемная строка на которой светится ошибка 4605

Код
 appobject .Application.Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Буду рад любой помощи

 

The_Prist

Пользователь

Сообщений: 14173
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

А на этой строке нет ошибки?
.WindowState = wdWindowStateNormal
точно? Зачем Вам позднее связывание, если внутри кода напихали констант ворда?
Советую ознакомиться:

Как из Excel обратиться к другому приложению

проблема в том, что Excel ничего не знает о константах Word-а, в том числе и про эту: wdReplaceAll

Изменено: The_Prist02.09.2016 12:29:09

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

postrelll

Пользователь

Сообщений: 7
Регистрация: 28.03.2016

#3

02.09.2016 12:43:05

The_Prist
Да, все верно, именно поэтому приходится в начале инициализировать экземпляр объекта Word.Application
.WindowState = wdWindowStateNormal — на эту строку не ругается
Инициализация объекта Word.Application идет в самом начале макроса. Если я убираю вот эту строку из кода

Код
appobject .Application.Selection.Find.Execute Replace:=wdReplaceAll

То макрос выполняется без ошибок. Шаблон с Word документом сохраняется с нужным мне именем. Однако нужных мне замен в этом шаблоне не производится.

ПОдключенные библиотеки

<#1><#2>

 

Hugo

Пользователь

Сообщений: 23228
Регистрация: 22.12.2012

#4

02.09.2016 12:48:58

Вместо констант пишите явно значение этих констант.

Код
Const wdReplaceAll = 2
    Member of Word.WdReplace

Изменено: Hugo02.09.2016 13:00:20

 

postrelll

Пользователь

Сообщений: 7
Регистрация: 28.03.2016

Проблема решена  — поменял формат шаблонов на .docx и переместил их с системного диска в документы пользователя.

 

The_Prist

Пользователь

Сообщений: 14173
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#6

02.09.2016 13:51:39

Цитата
postrelll написал: Проблема решена

не хотите Вы прислушиваться и читать…Она обязательно может всплыть в другой раз. Т.к. библиотека Word 16 может не подхватиться на более ранних.
Сказать, почему макрос выполняется без ошибок? потому что все остальные переменные Word-а, возможно, тупо как 0 воспринимаются, т.к. директива Option Explicit не объявлена. И это тоже может повлечь свои ошибки.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

postrelll

Пользователь

Сообщений: 7
Регистрация: 28.03.2016

The_Prist
Да, я понимаю значение директивы Option Explicit.
Макрос выполняется корректно и результат так же корректен.

Проблема была в «безопасном режиме» шаблона, который открывался. В моем случае макрос открывал шаблон из указанного пути. В шаблоне в цикле делал замены в нужные места документов и затем сохранял шаблон под определенным именем. Ошибка изначально была связана с тем, что при открытии шаблона в безопасном режиме его невозможно редактировать, соответственно и делать замены в нём так же нельзя. А этот безопасный режим появился только в 2016 офисе (возможно и в 2013 он так же есть), поскольку в 2010 все открывалось нормально в обычном режиме. Стоит так же сказать, что шаблоны были в .doc формате для лучшей совместимости с более старыми офисами, поскольку макросом пользуются на самых разных ПК. Из-за этого и выползала ошибка.

Плюс я изначально все шаблоны загонял в отдельную папку на диске С.  Учитывая, что макрос сейчас запускается из-под WIn 10, проблему так же создавала встроенная защита системы, поскольку она любит подтверждать через UAC все процедуры перезаписи/удаления. Поэтому и перенес папку с шаблонами в документы пользователя.

Изменено: postrelll02.09.2016 17:05:03

 

Сергей Редькин

Пользователь

Сообщений: 1
Регистрация: 11.07.2021

#8

19.01.2022 08:58:23

У меня была похожая проблема со вставкой неформатированных значений из ячеек в размеченные закладками места в Word. Ошибки периодически вылазили на этой строке:

Код
.Application.Selection.PasteAndFormat (wdFormatPlainText)

Перенос файла шаблона в папку шаблонов по умолчанию не помог. Насколько понимаю проблемы возникают при вызове функций Word из VBA, запущенном в Excel, но до конца в причинах я так и не разобрался. Заменил Copy/Paste на вставку значения текстовой переменной. Самое интересное, что один Selection.Copy / Selection.PasteAndFormat (wdFormatPlainText) в самом конце макроса работает корректно, но как только вставляю в макрос несколько — вылазят ошибки.

Код
Sub CreateLetter()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim SaveAsName As String

Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True

Set wdDoc = wdApp.Documents.Add(Template:="C:____.dotx", NewTemplate:=False, DocumentType:=0)

With wdDoc
       
    Text = Cells(6, 2).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Должность"
    .Application.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    .Application.Selection.InsertAfter (Text)
       
    Text = Cells(6, 1).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Организация"
    .Application.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    .Application.Selection.InsertAfter (Text)

    Text = Cells(6, 3).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Кому"
    .Application.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
    .Application.Selection.InsertAfter (Text)
    
    Text = Cells(6, 4).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Обращение"
    .Application.Selection.InsertAfter (Text)
           
    Text = Cells(2, 11).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Должность_подписант"
    .Application.Selection.InsertAfter (Text)
    
    Text = Cells(2, 10).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Подписант"
    .Application.Selection.InsertAfter (Text)
    
    Text = Cells(1, 10).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Исполнитель"
    .Application.Selection.InsertAfter (Text)
    
    Text = Cells(1, 11).Text
    .Application.Selection.Goto wdGoToBookmark, , , "Телефон"
    .Application.Selection.InsertAfter (Text)
    
    ActiveSheet.PivotTables("Заезжающие").PivotSelect _
        "'[#Inbox люди].[Фамилия Имя Отчество].[Фамилия Имя Отчество]'[All]", _
        xlLabelOnly + xlFirstRow, True
    Selection.Copy
    .Application.Selection.Goto wdGoToBookmark, , , "Список"
    .Application.Selection.PasteAndFormat (wdFormatPlainText)
    
    .SaveAs2 Filename:=("D:_______ & Format(Now, "yyyy-mm-dd hh-mm-ss") & ".docx"), _
    FileFormat:=wdFormatXMLDocument, AddtoRecentFiles:=False
    
    .Close
End With

wdApp.Quit

End Sub

Изменено: Сергей Редькин19.01.2022 10:39:43

I am trying to do some relatively simple copy and pasting from Excel 2007 into Word 2007. I’ve looked through this site and others, and keep getting hung up on the same thing- the third line n the code below keeps giving me the «User type note defined» error msg. I am really confused since I just lifted this from another solution (and had similar issues with other solutions I tried to lift). Could someone please educate me on what is causing the error, and why?

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

SeanC's user avatar

SeanC

15.6k5 gold badges45 silver badges65 bronze badges

asked Jul 30, 2012 at 20:13

Tommy Z's user avatar

3

This answer was mentioned in a comment by Tim Williams.

In order to solve this problem, you have to add the Word object library reference to your project.

Inside the Visual Basic Editor, select Tools then References and scroll down the list until you see Microsoft Word 12.0 Object Library. Check that box and hit Ok.

From that moment, you should have the auto complete enabled when you type Word. to confirm the reference was properly set.

Community's user avatar

answered Jul 1, 2013 at 19:24

ForceMagic's user avatar

ForceMagicForceMagic

6,15212 gold badges68 silver badges88 bronze badges

2

As per What are the differences between using the New keyword and calling CreateObject in Excel VBA?, either

  • use an untyped variable:

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

or

  • Add a reference to Microsoft Word <version> Object Library into the VBA project via Tools->References..., then create a typed variable and initialize it with the VBA New operator:

    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

A typed variable will give you autocomplete.

answered Sep 1, 2017 at 17:27

ivan_pozdeev's user avatar

ivan_pozdeevivan_pozdeev

33.3k16 gold badges105 silver badges150 bronze badges

  • Remove From My Forums
  • Вопрос

  • Здравствуйте!

    Подскажите в чем ошибка. пытаюсь сделать в форме кнопку при нажатии которой должен открыться документ в Word.

    при нажатии появляется ошибка «Compile error: User defined — type not defined»  и выделяется строчка

    Code Snippet

      Dim app As Word.Application

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

      Спасибо за помощь, заранее!

Ответы

  • В редакторе VB выберите Tools->References и в открывшемся окне поставьте галку напротив Microsoft Word <версия>

  1. 01-21-2005, 08:06 AM

    #1

    john.9.williams@bt.com


    Guest

    Hi

    I am using this daclaration in a program

    «Dim Appword As word.application»

    when i run my program i get this error assigned to this

    «Compile error userdefined type not defined»

    I know i have to do something but not sure what, any help greatly
    received

    Johny


  2. 01-21-2005, 08:06 AM

    #2

    RE: Dim Appword As word.application

    Use:

    Set AppWord=CreateObject(«Word.Application»)

    OR:

    Add the Word object library reference to your project

    «john.9.williams@bt.com» wrote:


    > Hi
    >
    > I am using this daclaration in a program
    >
    > «Dim Appword As word.application»
    >
    > when i run my program i get this error assigned to this
    >
    > «Compile error userdefined type not defined»
    >
    > I know i have to do something but not sure what, any help greatly
    > received
    >
    > Johny
    >
    >


  3. 01-21-2005, 09:06 AM

    #3

    john.9.williams@bt.com


    Guest

    Re: Dim Appword As word.application

    Where would i use the Set appWord = CreateObject(«Word.Application»)
    syntax

    AA2e72E wrote:


    > Use:
    >
    > Set AppWord=CreateObject(«Word.Application»)
    >
    > OR:
    >
    > Add the Word object library reference to your project
    >
    > «john.9.williams@bt.com» wrote:
    >
    > > Hi
    > >
    > > I am using this daclaration in a program
    > >
    > > «Dim Appword As word.application»
    > >
    > > when i run my program i get this error assigned to this
    > >
    > > «Compile error userdefined type not defined»
    > >
    > > I know i have to do something but not sure what, any help greatly
    > > received
    > >
    > > Johny
    > >
    > >


  4. 01-21-2005, 09:06 AM

    #4

    Re: Dim Appword As word.application

    Have you created a reference to the Word type library? Go to
    Tools>References, scroll down to Microsoft Word, and check it.


    HTH

    Bob Phillips

    <john.9.williams@bt.com> wrote in message
    news:1106306463.949876.325750@c13g2000cwb.googlegroups.com…


    > Hi
    >
    > I am using this daclaration in a program
    >
    > «Dim Appword As word.application»
    >
    > when i run my program i get this error assigned to this
    >
    > «Compile error userdefined type not defined»
    >
    > I know i have to do something but not sure what, any help greatly
    > received
    >
    > Johny
    >


  5. 01-21-2005, 09:06 AM

    #5

    Re: Dim Appword As word.application

    «AA2e72E» <AA2e72E@discussions.microsoft.com> wrote in message
    news:BA99EFE0-24A1-4168-82BF-364B1BDAA6BA@microsoft.com…
    > Use:
    >
    > Set AppWord=CreateObject(«Word.Application»)
    >

    You would also need

    Dim AppWord As Object


  6. 01-21-2005, 10:06 AM

    #6

    Re: Dim Appword As word.application

    See
    http://www.erlandsendata.no/english/…baoleolebasics
    http://www.erlandsendata.no/english/…olecontrolword

    HTH. Best wishes Harald

    <john.9.williams@bt.com> skrev i melding
    news:1106309477.009197.74890@z14g2000cwz.googlegroups.com…


    > Where would i use the Set appWord = CreateObject(«Word.Application»)
    > syntax


  7. 01-21-2005, 10:06 AM

    #7

    Re: Dim Appword As word.application

    You would do that instead of

    Set AppWord = New Word.Application

    but note my other post.

    HTH

    RP
    (remove nothere from the email address if mailing direct)

    <john.9.williams@bt.com> wrote in message
    news:1106309477.009197.74890@z14g2000cwz.googlegroups.com…


    > Where would i use the Set appWord = CreateObject(«Word.Application»)
    > syntax
    >
    >
    > AA2e72E wrote:
    > > Use:
    > >
    > > Set AppWord=CreateObject(«Word.Application»)
    > >
    > > OR:
    > >
    > > Add the Word object library reference to your project
    > >
    > > «john.9.williams@bt.com» wrote:
    > >
    > > > Hi
    > > >
    > > > I am using this daclaration in a program
    > > >
    > > > «Dim Appword As word.application»
    > > >
    > > > when i run my program i get this error assigned to this
    > > >
    > > > «Compile error userdefined type not defined»
    > > >
    > > > I know i have to do something but not sure what, any help greatly
    > > > received
    > > >
    > > > Johny
    > > >
    > > >

    >


  8. 01-21-2005, 11:06 AM

    #8

    Re: Dim Appword As word.application

    Why not spend a few minutes reading the «instructions» and save yourself
    time spent struggling later:

    As I previously posted:

    Microsoft Office 2000 Automation Help File Available (Q260410)
    http://support.microsoft.com/default…b;EN-US;260410

    Microsoft Office XP Automation Help File Available (Q302460)
    http://support.microsoft.com/default…b;EN-US;302460


    Regards,
    Tom Ogilvy

    <john.9.williams@bt.com> wrote in message
    news:1106309477.009197.74890@z14g2000cwz.googlegroups.com…


    > Where would i use the Set appWord = CreateObject(«Word.Application»)
    > syntax
    >
    >
    > AA2e72E wrote:
    > > Use:
    > >
    > > Set AppWord=CreateObject(«Word.Application»)
    > >
    > > OR:
    > >
    > > Add the Word object library reference to your project
    > >
    > > «john.9.williams@bt.com» wrote:
    > >
    > > > Hi
    > > >
    > > > I am using this daclaration in a program
    > > >
    > > > «Dim Appword As word.application»
    > > >
    > > > when i run my program i get this error assigned to this
    > > >
    > > > «Compile error userdefined type not defined»
    > > >
    > > > I know i have to do something but not sure what, any help greatly
    > > > received
    > > >
    > > > Johny
    > > >
    > > >

    >


  9. 01-21-2005, 11:06 AM

    #9

    Re: Dim Appword As word.application

    You need to set a reference to the Word object library. In VBA,
    go to the Tools menu, choose References, and scroll down to
    Microsoft Word. Check that box.


    Cordially,
    Chip Pearson
    Microsoft MVP — Excel
    Pearson Software Consulting, LLC
    www.cpearson.com

    <john.9.williams@bt.com> wrote in message
    news:1106306463.949876.325750@c13g2000cwb.googlegroups.com…


    > Hi
    >
    > I am using this daclaration in a program
    >
    > «Dim Appword As word.application»
    >
    > when i run my program i get this error assigned to this
    >
    > «Compile error userdefined type not defined»
    >
    > I know i have to do something but not sure what, any help
    > greatly
    > received
    >
    > Johny
    >


  • Remove From My Forums
  • Question

  • We ve got an error on access application with Office Word 2010 429 Activex can’t create object

    Dim appWord As Object

    Set appWord = CreateObject(«Word.Application»)

    Our application worked with word xp, 2003, 2007 and 2010Beta.

    We have not had any reference to microsoft office object library before.

    But we tried to had Microsoft office 14 object library and we don’t find it in the list. We just have Microsoft office 12 object librar, but it doesn’t worked…

    We tried to reinstall, it still not working and we try to install interop but we not see the reference…

Answers

  • Hi,

    We have access runtime XP installed for our application paralell the office of our users. The window is seven on the 3 test machine.

    We have found that it is the version «Click and run»
    which is not working with this code :

    Dim appWord as Word.Application
    Set appWord = New Word.Application

    We test on 2 office 2010 professionnal and it works ! We do not found any workaround for this.

    In conclusion, we have to recommand to our users to buy the expensive one (We do not know know if it’s done on purpose, but if yes, it’s a shame, I’m disappointed).

    • Marked as answer by

      Tuesday, September 28, 2010 7:55 AM

  • Hi Damien

    <<We have found that it is the version «Click and run»
    which is not working>>

    If you research this new technology, you’ll see that you’re not dealing with a «traditional» application. Here’s an extract from one blog entry I found

    «Products delivered via Click-to-Run execute in a virtual application environment on the local Operating System. This means that they have private copies of their files and settings, and that any changes they make are captured in the virtual environment.
    The effect is they don’t end up modifying any other software installed on the System. With few exceptions, only user data actually passes through the virtual environment to the local System. Click-to-Run users may notice that they have a virtual Q: drive
    on their PCs, this is the virtual file system used by Office.»

    (from
    http://windows7center.com/forums/office-2010/4779-introducing-click-run-office-2010-public-beta.html)

    Since this is not executing on the machine, but in a virtual environment, you apparently can’t address it using the «new» keyword.

    See also, for example:

    http://support.microsoft.com/kb/982434/en-us
    http://support.microsoft.com/kb/982431

    From some of my reading, the Click-to-run technology specifically protects the user from outside applications leveraging Office functionality (to do bad things). So the behavior you’re seeing is apparently consciously by design.


    Cindy Meister, VSTO/Word MVP

    • Marked as answer by
      Cindy Meister MVP
      Wednesday, September 29, 2010 8:22 AM

Модератор:Naeel Maqsudov

Shas

Сообщения:8
Зарегистрирован:05 июл 2009, 10:43

Господа, помогите, плиз, во вроде банальной ситуации.
Установлен Office 2003 SP3
В Access’e пытаюсь открыть вордовский документ, но получаю следующую ошибку:
«Automation error Библиотека не зарегистрирована»

Dim wrd_app As Word.Application
Dim wrd_doc As Word.Document
Dim fname As String
fname = «dod.rtf»
Set wrd_doc = GetObject(fname)
Set wrd_app = wrd_doc.Parent

Другие варианты кода с аналогичной сутью приводят к тому же.
Библиотеки вроде все подключены (см. атачмент)

У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя

mc-black

Сообщения:245
Зарегистрирован:08 май 2008, 16:09
Откуда:Россия, Нижний Новгород
Контактная информация:

06 июл 2009, 14:31

Буквально сегодня же и писал. В Вашей же теме. Не повторяйте, пожалуйста, один и тот же вопрос. Вы его правильно описали и уже получили ответ :-) Удачи!

Аватара пользователя

Aent

Сообщения:1108
Зарегистрирован:01 окт 2006, 14:52
Откуда:Saratov,Russia
Контактная информация:

06 июл 2009, 15:43

mc-black, человек же скриншот приложил с подключенной библиотекой …
Shas, а ошибка скорее всего, у вас возникает из-за того что вы не указали полного
пути к файлу, имя которого используется в GetObject. Насчёт повторов, mc-black
конечно же прав. Вам надо было отредактировать свой первый пост.

Андрей Энтелис,
aentelis.livejournal.com

Аватара пользователя

mc-black

Сообщения:245
Зарегистрирован:08 май 2008, 16:09
Откуда:Россия, Нижний Новгород
Контактная информация:

06 июл 2009, 18:36

человек же скриншот приложил с подключенной библиотекой …

не заметил, т.к. на работе графика была отключена и не посмотрел =)

По коду: во-первых, мне не нравится GetObject, а во-вторых, я бы сначала приложение бы создал, а потом в нем файл открывал бы как-то так:

Код: Выделить всё

Set wrd_app = New Word.Application
Set wrd_doc = wrd_app.Open(strFullPathToDocument)

Shas

Сообщения:8
Зарегистрирован:05 июл 2009, 10:43

06 июл 2009, 22:50

Спасибо за ответы, но проблема к сожалению осталась.
Код:
Dim wrd_app As Word.Application
Dim wrd_doc As Word.Document
Dim fname As String
fname = «dod.doc»
‘ ошибка выдается на следующую строку
Set wrd_app = New Word.Application
Set wrd_doc = wrd_app.Documents.Open(fname)

Ошибка «Библиотека не зарегистрирована» выдается до открытия документа ворд, так что наверное дело не в имени файла (проверял и с полным путем).
Когда в References отключаешь библиотеку «Microsoft Word 11.0 Object Library», то естественно сразу ругается на Word.Application: «User-defined type not defined» и нет подсказки методов/свойств при наборе (например, word.[список])
Подключаю — только что описанное пропадает, но появляется «Библиотека не зарегистрирована».
К слову, когда столкнулся с этой ошибкой и попробовал разные варианты кода, предположил, что у меня кривая инсталляция офиса (был Office 2003 без SP). Поставил Office 2003 SP3, а ошибка осталась.
Помогите, плиз, разобраться куда еще копать. Ведь просто на ровном месте стою!!!

У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя

mc-black

Сообщения:245
Зарегистрирован:08 май 2008, 16:09
Откуда:Россия, Нижний Новгород
Контактная информация:

06 июл 2009, 22:57

Переустановите Word с полным удалением, может и правда что-то перекосило с ее регистрацией — установщик вернее всего такие проблемы лечит. То что Вы описываете и правда ни в какие ворота не лезет, поверьте, у нас все совсем не так, как у Вас! Например, этим могут грешить некоторые «оптимизаторы реестра» самопального производства некоторых именитых и не очень производителей =)

Shas

Сообщения:8
Зарегистрирован:05 июл 2009, 10:43

06 июл 2009, 23:24

mc-black писал(а):Переустановите Word с полным удалением, может и правда что-то перекосило с ее регистрацией — установщик вернее всего такие проблемы лечит. То что Вы описываете и правда ни в какие ворота не лезет, поверьте, у нас все совсем не так, как у Вас! Например, этим могут грешить некоторые «оптимизаторы реестра» самопального производства некоторых именитых и не очень производителей =)

Попробую переустановить офис.
Никакими левыми и правыми оптимизаторами не пользуюсь.
Операционка Vista Ultimate
———————————————————————————
Добавлено сообщение
———————————————————————————
Спасибо!
Проблема решилась переустановкой офиса

icecybe

Сообщения:1
Зарегистрирован:15 июл 2009, 02:04

15 июл 2009, 02:08

Всем привет. Есть проблема.
Перед переустановкой винды переписали все документы на диск Д. После переустановки все документи ворд к ексели написанны зелённым цветом и доступа к ним нет. Ни переписать и ни удалить. Как я понял они зашифрованы потому что в свойствах документа стоит галочка [Шифровать содержимое для зашиты данных] и снять её никак.
Очень надо прошу помогите. Как получить к ним доступ. Документы очень важны.
Спасибо заранее.

Аватара пользователя

mc-black

Сообщения:245
Зарегистрирован:08 май 2008, 16:09
Откуда:Россия, Нижний Новгород
Контактная информация:

15 июл 2009, 07:26

Помочь Вам вспомнить пароль?

Несмотря на интенсивный поиск в Google, я не могу понять, что в этом не так. Я все еще пропускаю ссылку или что-то в этом роде? Если вы видите, в чем ошибка, я буду вечно благодарен!

Рекомендации:

  • Visual Basic для приложений
  • Библиотека объектов Microsoft Excel 16.0
  • OLE автоматизация
  • Библиотека объектов Microsoft Office 16.0
  • RefEdit Control
  • Библиотека объектов Microsoft Word 16.0

Переменные:

Public appWord As Word.Application
Public sapmWord As Word.Document

Dim asNimi As String 'in this current sub

Код:

On Error Resume Next

Set appWord = GetObject(, "Word.Application")
If Err <> 0 Then
    Set appWord = CreateObject("Word.Application")
End If
On Error GoTo 0
appWord.Visible = True
Set sapmWord = appWord.documents.Open("C:ThisIsWorkingandDocOpens.docx")
'sapmWord.Activate 'doesn't make a difference

With sapmWord
    Selection.EndKey Unit = wdStory 'this line is first line to give an error. With or without a dot in the beginning of line.
    Selection.TypeText Text:=asNimi 'this line too, if previous is commented
'...and so on!
End With

sapmWord.Close savechanges:=True
Set appWord = Nothing
Set sapmWord = Nothing


Ответы
4

Чтобы использовать With, вы должны ссылаться на участников с .:

With sapmWord
    .Selection.EndKey Unit = wdStory
    .Selection.TypeText Text:=asNimi
End With

SapmWord — это текстовый документ. Текстовый документ не имеет метода selection. Он есть в объекте приложения Word, так что, вероятно, вы имеете в виду (и да, вам нужен ‘.’)

With appWord 
    .Selection.EndKey Unit:= wdStory 
    .Selection.TypeText Text:=asNimi 
    '...and so on!
End With

В конце концов, мне ничего не оставалось, как добавить закладки в документ Word и заполнить их VBA. Я до сих пор не понимаю, почему эти исходные коды не работали в моем коде, хотя они работают для других. Спасибо всем за помощь, может быть, кто-то еще получит здесь ответы.

Вам необходимо изменить sapmWord.Close savechanges: = True для appWord.quit savechanges: = True

Другие вопросы по теме

    Option Explicit

    Dim appWord As Word.Application

    Dim docWord As Word.Document

    Dim i As Integer

    Private Sub cmdStep1_Click()

    If appWord.Documents.Count = 0 Then

        Set docWord = appWord.Documents.Add

    End If

    Call InsertTable

    End Sub

    Private Sub cmdStep2_Click()

    If appWord.Documents.Count = 0 Then

        MsgBox «Run step 1, then step2.»

    Else

        Call InsertTable

    End If

    End Sub

    Private Sub cmdQuit_Click()

    Unload Me

    End Sub

    Private Sub Form_Load()

    Set appWord = New Word.Application

    appWord.Visible = False

    i = 1

    End Sub

    Sub InsertTable()

    Dim rngCurrent As Word.Range

    Dim objTable As Word.Table

    docWord.PageSetup.LeftMargin = 60

    Set rngCurrent = docWord.Range

    With rngCurrent

        .InsertParagraphAfter

        .Collapse Direction:=wdCollapseEnd

        .Text = «Table No. » & CStr(i) & «: TableName»

        i = i + 1

        .Font.Name = «Times New Roman»

        .Font.Size = 14

        .Font.Italic = True

        .ParagraphFormat.Alignment = wdAlignParagraphLeft

    End With

    Set rngCurrent = docWord.Range

    With rngCurrent

        .InsertParagraphAfter

        .Collapse Direction:=wdCollapseEnd

    End With

    Set objTable = docWord.Tables.Add(Range:=rngCurrent, NumRows:=4, NumColumns:=15)

    With objTable

        .Borders.Enable = True

        .Rows.Height = 10

        .Columns(1).Width = CentimetersToPoints(1.04)

        .Columns(2).Width = CentimetersToPoints(2.33)

        .Columns(3).Width = CentimetersToPoints(1.06)

        .Columns(4).Width = CentimetersToPoints(1.16)

        .Columns(5).Width = CentimetersToPoints(1.16)

        .Columns(6).Width = CentimetersToPoints(1.06)

        .Columns(7).Width = CentimetersToPoints(1.06)

        .Columns(8).Width = CentimetersToPoints(1.47)

        .Columns(9).Width = CentimetersToPoints(1.69)

        .Columns(10).Width = CentimetersToPoints(1.07)

        .Columns(11).Width = CentimetersToPoints(1.07)

        .Columns(12).Width = CentimetersToPoints(1.07)

        .Columns(13).Width = CentimetersToPoints(1.07)

        .Columns(14).Width = CentimetersToPoints(1.2)

        .Columns(15).Width = CentimetersToPoints(1.2)

    End With

    appWord.Visible = True

    End Sub

    Private Sub Form_Unload(Cancel As Integer)

    If docWord Is Nothing Then

        appWord.Quit wdDoNotSaveChanges

        Set appWord = Nothing

        Exit Sub

    End If

    If docWord.Saved Then

        docWord.Close wdDoNotSaveChanges

        Set docWord = Nothing

        appWord.Quit wdDoNotSaveChanges

        Set appWord = Nothing

    Else

        MsgBox «Save changes before quit.»

        Cancel = True

    End If

    End Sub

Здравствуйте, друзья! Столкнулся с такой проблемой — сделал простенькую базу в Access 2007 (mdb) в которой хранится список литературы. В базе форма с парой окон для отображения содержимого записи и кнопка «Вставить» при нажатии которой, название выбранной книги вставляется в открытый (активный) документ Word. Реализовал я сию процедуру таким образом:

Visual Basic
1
2
3
4
5
6
7
8
Private Sub InsertToWord_Click()
Dim AppWord As Word.Application
 
Set AppWord = Word.Application
 
AppWord.ActiveWindow.Selection.TypeText Text:=[Название]
 
Exit Sub

Ну соответственно подключил библиотеку Вордовскую.
И все вроде работает, да нет-нет, при попытке экспортировать текст в только что открытый документ выдает такую ошибку:
Run-time error ‘462’
The remote server machine does not exist or unavailable

И исчезает она либо после двух-трех нажатий сама, либо после перезапуска базы данных.
Пробовал без создания объекта Word.Application — та же история. Пробовал создавать объект при помощи CreateObject — пишет человечьм (русским) языком, мол ни один документ не открыт, при этом в действительности открытый документ я лицезрею своими глазами…
Причем, абсолютно та же картина при попытке повторить трюк из Excel.
Как с этим бороться ума не приложу! Может кто подскажет?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

  1. 01-21-2005, 08:06 AM


    #1

    john.9.williams@bt.com


    Guest

    Dim Appword As word.application

    Hi

    I am using this daclaration in a program

    «Dim Appword As word.application»

    when i run my program i get this error assigned to this

    «Compile error userdefined type not defined»

    I know i have to do something but not sure what, any help greatly
    received

    Johny


  2. 01-21-2005, 08:06 AM


    #2

    RE: Dim Appword As word.application

    Use:

    Set AppWord=CreateObject(«Word.Application»)

    OR:

    Add the Word object library reference to your project

    «john.9.williams@bt.com» wrote:


    > Hi
    >
    > I am using this daclaration in a program
    >
    > «Dim Appword As word.application»
    >
    > when i run my program i get this error assigned to this
    >
    > «Compile error userdefined type not defined»
    >
    > I know i have to do something but not sure what, any help greatly
    > received
    >
    > Johny
    >
    >


  3. 01-21-2005, 09:06 AM


    #3

    john.9.williams@bt.com


    Guest

    Re: Dim Appword As word.application

    Where would i use the Set appWord = CreateObject(«Word.Application»)
    syntax

    AA2e72E wrote:


    > Use:
    >
    > Set AppWord=CreateObject(«Word.Application»)
    >
    > OR:
    >
    > Add the Word object library reference to your project
    >
    > «john.9.williams@bt.com» wrote:
    >
    > > Hi
    > >
    > > I am using this daclaration in a program
    > >
    > > «Dim Appword As word.application»
    > >
    > > when i run my program i get this error assigned to this
    > >
    > > «Compile error userdefined type not defined»
    > >
    > > I know i have to do something but not sure what, any help greatly
    > > received
    > >
    > > Johny
    > >
    > >


  4. 01-21-2005, 09:06 AM


    #4

    Re: Dim Appword As word.application

    Have you created a reference to the Word type library? Go to
    Tools>References, scroll down to Microsoft Word, and check it.


    HTH

    Bob Phillips

    <john.9.williams@bt.com> wrote in message
    news:1106306463.949876.325750@c13g2000cwb.googlegroups.com…


    > Hi
    >
    > I am using this daclaration in a program
    >
    > «Dim Appword As word.application»
    >
    > when i run my program i get this error assigned to this
    >
    > «Compile error userdefined type not defined»
    >
    > I know i have to do something but not sure what, any help greatly
    > received
    >
    > Johny
    >


  5. 01-21-2005, 09:06 AM


    #5

    Re: Dim Appword As word.application

    «AA2e72E» <AA2e72E@discussions.microsoft.com> wrote in message
    news:BA99EFE0-24A1-4168-82BF-364B1BDAA6BA@microsoft.com…
    > Use:
    >
    > Set AppWord=CreateObject(«Word.Application»)
    >

    You would also need

    Dim AppWord As Object


  6. 01-21-2005, 10:06 AM


    #6

    Re: Dim Appword As word.application

    See
    http://www.erlandsendata.no/english/…baoleolebasics
    http://www.erlandsendata.no/english/…olecontrolword

    HTH. Best wishes Harald

    <john.9.williams@bt.com> skrev i melding
    news:1106309477.009197.74890@z14g2000cwz.googlegroups.com…


    > Where would i use the Set appWord = CreateObject(«Word.Application»)
    > syntax


  7. 01-21-2005, 10:06 AM


    #7

    Re: Dim Appword As word.application

    You would do that instead of

    Set AppWord = New Word.Application

    but note my other post.

    HTH

    RP
    (remove nothere from the email address if mailing direct)

    <john.9.williams@bt.com> wrote in message
    news:1106309477.009197.74890@z14g2000cwz.googlegroups.com…


    > Where would i use the Set appWord = CreateObject(«Word.Application»)
    > syntax
    >
    >
    > AA2e72E wrote:
    > > Use:
    > >
    > > Set AppWord=CreateObject(«Word.Application»)
    > >
    > > OR:
    > >
    > > Add the Word object library reference to your project
    > >
    > > «john.9.williams@bt.com» wrote:
    > >
    > > > Hi
    > > >
    > > > I am using this daclaration in a program
    > > >
    > > > «Dim Appword As word.application»
    > > >
    > > > when i run my program i get this error assigned to this
    > > >
    > > > «Compile error userdefined type not defined»
    > > >
    > > > I know i have to do something but not sure what, any help greatly
    > > > received
    > > >
    > > > Johny
    > > >
    > > >

    >


  8. 01-21-2005, 11:06 AM


    #8

    Re: Dim Appword As word.application

    Why not spend a few minutes reading the «instructions» and save yourself
    time spent struggling later:

    As I previously posted:

    Microsoft Office 2000 Automation Help File Available (Q260410)
    http://support.microsoft.com/default…b;EN-US;260410

    Microsoft Office XP Automation Help File Available (Q302460)
    http://support.microsoft.com/default…b;EN-US;302460


    Regards,
    Tom Ogilvy

    <john.9.williams@bt.com> wrote in message
    news:1106309477.009197.74890@z14g2000cwz.googlegroups.com…


    > Where would i use the Set appWord = CreateObject(«Word.Application»)
    > syntax
    >
    >
    > AA2e72E wrote:
    > > Use:
    > >
    > > Set AppWord=CreateObject(«Word.Application»)
    > >
    > > OR:
    > >
    > > Add the Word object library reference to your project
    > >
    > > «john.9.williams@bt.com» wrote:
    > >
    > > > Hi
    > > >
    > > > I am using this daclaration in a program
    > > >
    > > > «Dim Appword As word.application»
    > > >
    > > > when i run my program i get this error assigned to this
    > > >
    > > > «Compile error userdefined type not defined»
    > > >
    > > > I know i have to do something but not sure what, any help greatly
    > > > received
    > > >
    > > > Johny
    > > >
    > > >

    >


  9. 01-21-2005, 11:06 AM


    #9

    Re: Dim Appword As word.application

    You need to set a reference to the Word object library. In VBA,
    go to the Tools menu, choose References, and scroll down to
    Microsoft Word. Check that box.


    Cordially,
    Chip Pearson
    Microsoft MVP — Excel
    Pearson Software Consulting, LLC
    www.cpearson.com

    <john.9.williams@bt.com> wrote in message
    news:1106306463.949876.325750@c13g2000cwb.googlegroups.com…


    > Hi
    >
    > I am using this daclaration in a program
    >
    > «Dim Appword As word.application»
    >
    > when i run my program i get this error assigned to this
    >
    > «Compile error userdefined type not defined»
    >
    > I know i have to do something but not sure what, any help
    > greatly
    > received
    >
    > Johny
    >


Понравилась статья? Поделить с друзьями:
  • Df771 ошибка к9к
  • Df770 ошибка рено
  • Df721 ошибка рено флюенс
  • Df721 ошибка рено логан 2
  • Df656 рено ошибка