【问题标题】:find and replace symbol using vbs使用vbs查找和替换符号
【发布时间】:2013-06-15 02:17:55
【问题描述】:

我正在处理一个 1XXX 字的文档,我想使用 vbs 更快地更改复选框的状态,但我找不到任何工作解决方案,之后,我想知道查找和替换是否可以解决我的问题,所以我写了一些代码

Const wdReplaceAll  = 2

Set objWord = CreateObject("Word.Application")
objWord.Visible = True

Set objDoc = objWord.Documents.Open("C:\checkbox.doc")
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection

objSelection.Find.Text = "@1"
objSelection.Find.Forward = TRUE
objSelection.Find.MatchWholeWord = TRUE

objSelection.Find.Replacement.Text = objSelection.InsertSymbol 253, "Wingdings"
objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll

但是,它不起作用,并且总是在 objSelection.InsertSymbol 253 上显示错误...

【问题讨论】:

标签: checkbox vbscript ms-word symbols


【解决方案1】:

您不能在这样的作业中使用InsertSymbol。将搜索文本替换为格式为“Wingdings”的适当字符:

With objSelection.Find
  .Text = "@1"
  .Replacement.Text = ChrW(61693)
  .Replacement.Font.Name = "Wingdings"
  ...
End With

objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll

或者只是Find搜索文本,然后在选择上使用InsertSymbol

objSelection.Find.Text = "@1"
objSelection.Find.Execute

objSelection.InsertSymbol 253, "Wingdings"

【讨论】:

  • 感谢您的回答,顺便说一句,当您执行时,我需要将 wdreplaceall 变量更改为 1 吗?
  • 如果你这样做了,常量的名字会产生误导。最好创建一个新常量 Const wdReplaceOne = 1 并改用它。
  • 好的,它有效。但是,当我使用 vbs 时,如何修改复选框的状态(勾选或取消勾选)?因为我不确定我们的老板会不会接受这个解决方案
  • 这与您的问题有什么关系?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 2012-06-27
  • 1970-01-01
  • 2014-09-01
  • 2011-05-14
  • 2016-04-09
  • 1970-01-01
相关资源
最近更新 更多