我开始使用twapi进行COM连接,到目前为止我非常喜欢它。然而,特定office软件包的接口文档有些薄弱(至少对我来说:)),或者多年来丢失了。我目前的问题是一个非常小的问题,但我仍然被困住了。(提前说一下:指出twapi使用的任何严肃文档将非常非常有帮助和感激)
我想在Word-Document中做一个简单的"查找和替换"。
这个的VB代码看起来像这样:
Set myRange = ActiveDocument.Content
With myRange.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "Hello"
.Replacement.Text = "Goodbye"
.Execute Replace:=wdReplaceAll
End With
由于似乎在TCL中不可能一次调用对象树,所以我尝试这样做,将其分解为TCL:
proc Word_FindAndReplace { doc cSearch cReplace} {
try {
set content [$doc Content]
set find [$content Find]
set repl [$find Replacement]
$find ClearFormatting
$repl ClearFormatting
$find Text $cSearch
$repl Text $cReplace
#wdReplaceAll 2 ;#replace all
$find Execute Replace 2 ;# <-----not working
return 1
} on error {msg} {
puts stderr "$msg $::errorInfo $::errorCode"
return -1
}
}
最后的"$find Execute Replace "是罪魁祸首。其他一切都很好。似乎打电话给"执行者"最后一行需要一个特殊的参数格式,但是我不知道。任何提示都是非常感谢的。
请看评论。最初问题的答案仍然是很好的,因为我怀疑,它将出现在twapi的其他地方,但目前的问题可以解决。"Find"一次接受所有可能的参数(总共15个),因此
行$find Execute $cSearch 0 0 0 0 0 1 0 0 $cReplace 2 0 0 0 0
解决了我当前的问题。