我正在尝试替换文档中的文本,如下所示:
require 'win32ole'
def replace_doc(doc, find, repl)
begin
word = WIN32OLE.new('Word.Application')
word.Visible = true
doc = word.Documents.Open(doc)
word.Selection.HomeKey(unit=6)
finder = word.Selection.Find
finder.Text = "[#{find}]"
while word.Selection.Find.Execute
word.Selection.TypeText(text=repl)
end
doc.SaveAs(doc)
doc.Close
rescue Exception => e
puts e.message
puts "Unable to edit file."
end
end
def main()
puts "File: "
doc = gets.chomp()
puts "Find: "
find = gets.chomp()
puts "Replace with: "
repl = gets.chomp()
replace_doc(doc, find, repl)
end
main()
我在Windows XP上运行Ruby 2.0。 WINWORD.exe进程启动(我在任务管理器中看到它),并且没有引发异常。但是,当我转到文档时,我希望不会替换任何文本 - 是。到底是怎么回事?我已经从here复制了代码(除了一些内容)。
答案 0 :(得分:0)
如果没有您正在使用的实际word文档和输入数据,很难说,但我怀疑finder.Text
中的方括号是您的问题。由于您的计划现在是,输入foo
查找文字会在您的Word文档中搜索[foo]
,而不是foo
。请注意,在您链接的帖子中。示例word文档中有实际的方括号(它包含[date]
等。)