Class

# WordApplication

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

## Description

Used to automate Microsoft Word. Supported on the Windows platform only. You will need to copy the MSOfficeAutomation plugin (located in the Extras folder of the installation) to the Plugins folder before you can use this class.

## Properties

<div class="rst-class">

table-centered_columns_3_and_4

</div>

| Name                             | Type                                        | Read-Only | Shared |
|----------------------------------|---------------------------------------------|-----------|--------|
| `Handle<wordapplication.handle>` | `Ptr</api/data_types/additional_types/ptr>` |           |        |

## Methods

<div class="rst-class">

table-centered_column_4

</div>

| Name                                         | Parameters                                                                                       | Returns                              | Shared |
|----------------------------------------------|--------------------------------------------------------------------------------------------------|--------------------------------------|--------|
| `Constructor<wordapplication.constructor0>`  | copy As `OLEObject</api/windows/oleobject>`                                                      |                                      |        |
| `Constructor<wordapplication.constructor1>`  | ProgramID As `String</api/data_types/string>`                                                    |                                      |        |
| `Constructor<wordapplication.constructor2>`  | ProgramID As `String</api/data_types/string>`, NewInstance As `Boolean</api/data_types/boolean>` |                                      |        |
| `Invoke<wordapplication.invoke>`             | NameOfFunction As `String</api/data_types/string>`                                               | `Variant</api/data_types/variant>`   |        |
| `TypeName<wordapplication.typename>`         |                                                                                                  | `String</api/data_types/string>`     |        |
| `Value<wordapplication.value>`               | PropertyName As `String</api/data_types/string>`                                                 | `Variant</api/data_types/variant>`   |        |
| `ValueArray<wordapplication.valuearray>`     | Name As `String</api/data_types/string>`, Parameters() As `Variant</api/data_types/variant>`     | `Variant()</api/data_types/variant>` |        |
| `ValueArray2D<wordapplication.valuearray2d>` | Name As `String</api/data_types/string>`, Parameters() As `Variant</api/data_types/variant>`     | `Variant()</api/data_types/variant>` |        |

## Events

<div class="rst-class">

table-centered_column_4

</div>

| Name                                             | Parameters                                                                                          | Returns                            |
|--------------------------------------------------|-----------------------------------------------------------------------------------------------------|------------------------------------|
| `EventTriggered<wordapplication.eventtriggered>` | NameOfEvent As `String</api/data_types/string>`, Parameters() As `Variant</api/data_types/variant>` | `Variant</api/data_types/variant>` |

## Property descriptions

<div id="wordapplication.handle">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.Handle

**Handle** As `Ptr</api/data_types/additional_types/ptr>`

> Returns a pointer to the IDispatch interface that is being used.

## Method descriptions

<div id="wordapplication.constructor0">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.Constructor

**Constructor**(copy As `OLEObject</api/windows/oleobject>`)

> <div class="note">
>
> <div class="title">
>
> Note
>
> </div>
>
> `Constructors</api/language/constructor>` are special methods called when you create an object with the `New</api/language/new>` keyword and pass in the parameters above.
>
> </div>
>
> Creates a copy of the OLEObject.

<div id="wordapplication.constructor1">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.Constructor

**Constructor**(ProgramID As `String</api/data_types/string>`)

> Creates a new OLEObject using the passed ProgramID is the COM server's program ID as stored in the registry. It can also be the Class ID (in curly braces). This constructor will try to find a previous instance of the COM server if it is running. Otherwise, it will create a new instance.

<div id="wordapplication.constructor2">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.Constructor

**Constructor**(ProgramID As `String</api/data_types/string>`, NewInstance As `Boolean</api/data_types/boolean>`)

> Creates a new OLEObject using the passed ProgramID is the COM server's program ID as stored in the registry. The NewInstance parameter specifies whether to create a new instance of the COM server (`True</api/language/true>`) or try to use an existing one if it is running (`False</api/language/false>`).
>
> The following example automates Internet Explorer.
>
> ``` xojo
> Try
>   Var obj As OLEObject
>   Var v As Variant
>   Var params(1) As Variant
>
>   obj = New OLEObject("InternetExplorer.Application", True)
>   obj.Value("Visible") = True
>   params(1) = "httsp://www.xojo.com"
>   v = obj.Invoke("Navigate", params)
> Catch err As OLEException
>     MessageBox(err.Message)
> End Try
> ```

<div id="wordapplication.invoke">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.Invoke

**Invoke**(NameOfFunction As `String</api/data_types/string>`) As `Variant</api/data_types/variant>`

> Invokes a method of the COM server, and passes the array of parameters to the method.
>
> Make sure to correctly dimension the array, as this will determine the number of parameters that get passed to the method. The first parameter begins at 1.

<div id="wordapplication.typename">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.TypeName

**TypeName** As `String</api/data_types/string>`

> Returns a `String</api/data_types/string>` that provides `Variant</api/data_types/variant>` subtype information about the object.

<div id="wordapplication.value">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.Value

**Value**(PropertyName As `String</api/data_types/string>`) As `Variant</api/data_types/variant>`

> Used to get or set a value of the object.
>
> The parameter *PropertyName* is the name of the property to assign a new value to or to get the value. The value property can optionally take a list of properties when assigning a value, i.e.,
>
> ``` xojo
> OLEObject.Value(NameOfProperty As String, params() As Variant) = value
> ```
>
> If the optional parameter ByValue is `True</api/language/true>`, property assignment is by value.

<div id="wordapplication.valuearray">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.ValueArray

**ValueArray**(Name As `String</api/data_types/string>`, Parameters() As `Variant</api/data_types/variant>`) As `Variant()</api/data_types/variant>`

> Used to get or set a value of the object.
>
> The Name parameter is the name of the property to assign a new value to or to get the value. ValueArray can accept a list of parameters to pass to the automation object. The parameters array is assumed to be 1-based.

<div id="wordapplication.valuearray2d">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.ValueArray2D

**ValueArray2D**(Name As `String</api/data_types/string>`, Parameters() As `Variant</api/data_types/variant>`) As `Variant()</api/data_types/variant>`

> Used to get or set a value of the object for two-dimensional arrays.
>
> The Name parameter is the name of the property to assign a new value to or to get the value. ValueArray2D can accept a list of parameters to pass to the automation object. The *Parameters* array is assumed to be 1-based.

## Event descriptions

<div id="wordapplication.eventtriggered">

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

</div>

<div class="rst-class">

forsearch

</div>

WordApplication.EventTriggered

**EventTriggered**(NameOfEvent As `String</api/data_types/string>`, Parameters() As `Variant</api/data_types/variant>`) As `Variant</api/data_types/variant>`

> Occurs when the OLEObject receives an event from the automation server. The event name is passed as the first parameter and the parameters for the event are passed as an array of `variants</api/data_types/variant>`.

## Notes

The language that you use to automate Microsoft Office applications is documented by Microsoft and numerous third-party books on Visual Basic for Applications (VBA). Microsoft Office applications provide online help for VBA. To access the online help, choose Macros from the Tools Menu of your MS Office application, and then choose Visual Basic Editor from the Macros submenu. When the Visual Basic editor appears, choose Microsoft Visual Basic Help from the Help menu. The help is contextual in the sense that it provides information on automating the Office application from which you launched the Visual Basic editor.

If VBA Help does not appear, you will need to install the help files. On Windows Office 2003, Office prompts you to install the VBA help files when you first request VBA help. You don't need the master CD.

Microsoft has additional information on VBA at <http://msdn.microsoft.com/vbasic/> and have published their own language references on VBA. One of several third-party books on VBA is "VB & VBA in a Nutshell: The Language" by Paul Lomax (ISBN: 1-56592-358-8).

## Sample code

This code creates a Word document from the text entered into a `DesktopTextField</api/user_interface/desktop/desktoptextfield>` on the form, TextField1.

The code is in a `DesktopButton's</api/user_interface/desktop/desktopbutton>` Pressed event handler. It also sets the font and font size of the text.

``` xojo
Try
  Var word As WordApplication
  Var doc As WordDocument
  Var style As WordStyle
  Var v As Variant
  Var p As Integer
  word = New WordApplication
  word.Visible = True
  doc = Word.Documents.Add
  doc.Range.Text = TextField1.Text

  style = doc.Paragraphs(1).Style
  ' populate 3 labels with font style, font name, font size info
  Label1.Text = style.NameLocal
  FontNameLabel.Text = style.Font.Name
  p = style.Font.Size
  FontSizeLabel.Text = p.ToString
Catch err As OLEException
    MessageBox(err.Message)
End Try
```

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

This example does a search and replace operation on the text in TextField1, using the text in the `DesktopTextFields</api/user_interface/desktop/desktoptextfield>`, FindText and ReplaceText. The Word document is updated after the search and replace.

``` xojo
Try
  Var word As WordApplication
  Var doc As WordDocument
  Var find As WordFind

  word = New WordApplication
  doc = word.ActiveDocument

  find = word.Selection.Find

  find.ClearFormatting
  find.Replacement.ClearFormatting

  Find.Text = FindText.Text ' Find field
  Find.Replacement.Text = ReplaceText.Text ' replace with field

  find.Forward = True
  find.Wrap = Office.wdFindContinue
  find.Format = False
  find.MatchCase = False
  find.MatchWholeWord = False
  find.MatchWildcards = False
  find.MatchSoundsLike = False
  find.MatchAllWordForms = False

  Var oleParam As New OLEParameter
  oleParam.Value = office.wdReplaceAll
  oleParam.Position = 11

  find.Execute(oleParam)

  TextField1.Text = doc.Range.Text
Catch err As OLEException
    MessageBox(err.Message)
End Try
```

## Compatibility

|                       |                       |
|-----------------------|-----------------------|
| **Project Types**     | Console, Desktop, Web |
| **Operating Systems** | Windows               |

<div class="seealso">

`OLEObject</api/windows/oleobject>` parent class; `Controlling Microsoft Office from your app</topics/office_automation/controlling_microsoft_office_from_your_app>`, `ExcelApplication</api/windows/excelapplication>`, `Office</api/windows/office>`, `OLEObject</api/windows/oleobject>`, `OLEException</api/exceptions/oleexception>`, `PowerPointApplication</api/windows/powerpointapplication>` classes.

- [VBA Programming Language Documentation](http://www.microsoft.com/en-us/download/details.aspx?id=9034)
- [Office Developer Documentation](https://msdn.microsoft.com/en-us/library/office/dn467914.aspx)

</div>
