WD2000: Error Creating Pre-Existing Custom Document PropertyID: Q212618
|
When you use Visual Basic for Applications to create a new custom document
property, the following error message may appear:
Run-time error '-2147467259(80004005):
Automation error
This error is returned if the custom document property you are creating already exists.
Microsoft provides programming examples for illustration only, without
warranty either expressed or implied, including, but not limited to, the
implied warranties of merchantability and/or fitness for a particular
purpose. This article assumes that you are familiar with the programming
language being demonstrated and the tools used to create and debug
procedures. Microsoft support professionals can help explain the functionality
of a particular procedure, but they will not modify these examples to
provide added functionality or construct procedures to meet your specific
needs. If you have limited programming experience, you may want to contact
the Microsoft fee-based consulting line at (800) 936-5200. For more
information about the support options available from Microsoft, please see
the following page on the World Wide Web:
http://www.microsoft.com/support/supportnet/refguide/To avoid this error, check the Custom Documents Property collection to see whether the document property already exists. The following sample Visual Basic for Applications macros demonstrate how this can be accomplished.
Sub SetCustomPropertyName()
' **************************************************
' This SubRoutine passes the Custom Property Name,
' Value, and Property Type to the SetProp subroutine.
' **************************************************
' Set the custom property "MyCustomPropertyName" equal
' to "MyCustomValue". The msoPropertyTypeString constant
' specifies the type of property, and must be included.
SetProp "MyCustomPropertyName", "MyCustomValue", _
msoPropertyTypeString
End Sub
Sub SetProp(CDPName As String, CDPValue As Variant, Optional _
CDPType As Long)
' ***********************************************
' The SetProp routine checks to see whether the Custom
' Document Property pre-exists. If it exists, then
' it adds the new value. If it does not exist,
' it creates the new property and adds the new value.
' ***********************************************
' Make sure the optional argument CDPType is set.
' If it is missing, make it a string value.
Dim oCDP, oProp, msg
If IsMissing(CDPType) Then
CDPType = msoPropertyTypeString
End If
Set oCDP = ActiveDocument.CustomDocumentProperties
' Compare each custom document property to the
' property you want to create to see whether it exists.
For Each oProp In oCDP
' If the Custom Property exists...
If oProp.Name = CDPName Then
With oProp
' ...the custom property Type you are setting
' must match the pre-existing custom property.
If .Type <> CDPType Then
msg = "The custom property types do not match."
msg = msg + " Custom property not set."
MsgBox msg
' End the routine.
Exit Sub
End If
.LinkToContent = False
' Set the new value.
.Value = CDPValue
End With
' A match was found, so exit the routine.
Exit Sub
End If
Next oProp
' No match was found. Create a new property and value.
oCDP.Add Name:=CDPName, Value:=CDPValue, Type:=CDPType, _
LinkToContent:=False
End Sub
For more information about using the sample code in this article, please
see the following article in the Microsoft Knowledge Base:
Q212536 OFF2000: How to Run Sample Code from Knowledge Base Articles
Additional query words: vb vba vbe
Keywords : kbdta kbdtacode OffVBA kbmacroexample kbwordvba wd2000
Version : WINDOWS:2000
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: May 13, 1999