【发布时间】:2017-05-26 15:37:56
【问题描述】:
我有一段代码可以打开一个 word 模板,然后尝试设置命名 FormFields 的值。
$options = @{
'foo' ='bar';
'bizz' = 'buzz';
}
$document = 'C:\Form_template.doc'
$word = new-object -ComObject Word.application
$doc = $word.Documents.Open($document)
$word.visible = $true
$fields = $doc.FormFields
$fields.item('foo').Result = $options['foo']
$fields.item('bizz').Result = $options['bizz']
运行此 sn-p 时,表单字段设置不正确。但是,当我运行
$fields.item('foo').Result = 'bar'
$fields.item('bizz').Result = 'buzz'
根据需要设置值。
编辑:这是交互式外壳中的示例
PS C:\>$fields.item('foo').Result = $options['foo']
PS C:\>$fields.item('bizz').Result = $options['bizz']
PS C:\> $doc.FormFields.Item('foo').Result
PS C:\> $doc.FormFields.Item('bizz').Result
PS C:\>#Now let's try setting the values directly with a string.
PS C:\>$fields.item('foo').Result = 'bar'
PS C:\>$fields.item('bizz').Result = 'buzz'
PS C:\> $doc.FormFields.Item('foo').Result
bar
PS C:\> $doc.FormFields.Item('bizz').Result
buzz
为什么我不能使用哈希值设置 FormField 值?
【问题讨论】:
-
$options['foo']是'bar',因此静态使用该值的相同命令将是$fields.item('foo').Result = 'bar' -
BenH - 这就是我的问题。它们应该是相同的东西,但会产生不同的结果。
-
您的示例行是:
$fields.item('foo').Result = 'foo'不是$fields.item('foo').Result = 'bar' -
有什么区别? @BenH 他说的是在一种情况下没有分配值而在另一种情况下没有分配值......
-
试试
$fields.item('bizz').Result = [string]$options['bizz']???
标签: powershell ms-word com