This topic contains 1 reply, has 2 voices, and was last updated by
November 28, 2014 at 3:11 am #20845ParticipantTopics: 1Replies: 0Points: 0Rank: Member
I'm trying to convert the VBA code from the following articles into PowerShell. Everything seems to work fine apart from the setting of the placeholder text.
Viewing the default placeholdertext is easy enough ;-
$objCC.PlaceholderText.Value Choose an item.
This is my shortened code purely trying to set the placeholder text.
$Word = New-Object -Com Word.Application $template = "template.docx" #this can be any old word doc [saved in %TEMP% with a "Section4" bookmark defined] $Doc = $Word.Documents.Open($env:temp + "\" + $template) $Doc.Activate() $objRange = $Doc.BookMarks.Item("Section4").Range $objCC = $objRange.ContentControls.Add(4) # 4 = Drop down list $text = "Select upgrade type..." $objCC.SetPlaceholderText($null,$null,$text)
Get Member reveals its an available method ;-
Name MemberType Definition
—- ———- ———-
SetPlaceholderText Method void SetPlaceholderText (BuildingBlock, Ra...
No matter how I try to set it fails with the following ;-
Exception calling "SetPlaceholderText" with "3" argument(s): "Type mismatch.
(Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"
At line:1 char:1
+ CategoryInfo : NotSpecified: (:) , MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
Can anyone throw any light on why this isnt working and how it can be done.
November 28, 2014 at 10:29 am #20855ParticipantTopics: 0Replies: 669Points: 0Rank: Member
The method expects one out of 3 possible parameters each of which is a different type. It doesn't recognise $null so treats it as the first parameter and fails because it isn't of the correct type
I couldn't get your code to actually add the control to work so modified it to this
$Word = New-Object -Com Word.Application
$word.visible = $true
$template = "c:\test\template.docx"
$Doc = $Word.Documents.Open($template)
$cntrl = [Enum]::Parse([Microsoft.Office.Interop.Word.WdContentControlType], "wdContentControlDropdownList")
$objCC = $doc.ContentControls.Add($cntrl)
Still looking at the SetPlaceHoldertext method
The topic ‘Word Automation Error when setting SetPlaceholderText’ is closed to new replies.