当前位置: 首页 > 知识库问答 >
问题:

宏(VBA)崩溃Microsoft word(查找并替换)

凌朗
2023-03-14

我使用VBA代码批量查找和替换高亮显示的文本。宏查找并替换文档中的单词。它适用于小文档(1-2页)上的一些突出显示的文本。然而,当我在一个超过100页的大型文档上使用这个宏时,微软的word崩溃了,变得没有反应,所以我不得不被迫退出。

代码是为了帮助编辑信息变得容易。我用XXXXX和高亮黑色替换表格中也出现的高亮文本。

有没有人能提供一些技巧来提高代码的效率?

这是密码

Sub FindandReplaceHighlight()
  Dim strFindColor As String
  Dim strReplaceColor As String
  Dim strText As String
  Dim objDoc As Document
  Dim objRange As Range
 
  Application.ScreenUpdating = False
 
  Set objDoc = ActiveDocument
 
  strFindColor = InputBox("Specify a color (enter the value):", "Specify Highlight Color")
  strReplaceColor = InputBox("Specify a new color (enter the value):", "New Highlight Color")
  strText = InputBox("Specify a new text (enter the value):", "New Text")
  
  With Selection
    .HomeKey Unit:=wdStory
    With Selection.Find
      .Highlight = True
 
      Do While .Execute
        If Selection.Range.HighlightColorIndex = strFindColor Then
          Set objRange = Selection.Range
          objRange.HighlightColorIndex = strReplaceColor
          objRange.Text = strText
          objRange.Font.ColorIndex = wdBlack
          Selection.Collapse wdCollapseEnd
        End If
      Loop
    End With
  End With
 
  Application.ScreenUpdating = True
End Sub

共有1个答案

夏侯瑞
2023-03-14

尝试:

Sub FindandReplaceHighlight()
Application.ScreenUpdating = False
Dim ClrFnd As Long, ClrRep As Long, strTxt As String
Const StrColors As String = vbCr & _
"  1 Black" & vbCr & _
"  2  Blue" & vbCr & _
"  3  Turquoise" & vbCr & _
"  4  Bright Green" & vbCr & _
"  5  Pink" & vbCr & _
"  6  Red" & vbCr & _
"  7  Yellow" & vbCr & _
"  8  White" & vbCr & _
"  9  Dark Blue" & vbCr & _
"10 Teal" & vbCr & _
"11 Green" & vbCr & _
"12 Violet" & vbCr & _
"13 Dark Red" & vbCr & _
"14 Dark Yellow" & vbCr & _
"15 Gray 50" & vbCr & _
"16 Gray 25%"
 
ClrFnd = InputBox("Specify the old color (enter the value):" & StrColors, "Specify Highlight Color")
ClrRep = InputBox("Specify the new color (enter the value):" & StrColors, "New Highlight Color")
strTxt = InputBox("Specify the new text (enter the value):", "New Text")
  
With ActiveDocument
  With .Range
    With .Find
      .ClearFormatting
      .Replacement.ClearFormatting
      .Highlight = True
      .Forward = True
      .Wrap = wdFindStop
    End With
    Do While .Find.Execute
      If .HighlightColorIndex = ClrFnd Then
        .HighlightColorIndex = ClrRep
        .Text = strTxt
        .Font.ColorIndex = wdBlack
        .Collapse wdCollapseEnd
      End If
    Loop
  End With
End With
Application.ScreenUpdating = True
End Sub
 类似资料:
  • 我试图在表格的第2列中找到所有文本为“0.118”的单元格,并为该行列出命令列表。我还试图从该行中找到的选定文本的第5列中获取值,然后减去我在该行的输入框中输入的值。 我遇到的问题是,它只改变了我找到的“0.118”之一,而不是每行中的所有内容。 我不知道如何搜索选定行的列(5)。 任何帮助都将不胜感激。 非常感谢。

  • 在本章中,我们来学习如何逐步编写一个简单的宏。 第1步 - 首先,在Excel 2016中启用“开发者”菜单。要完成这个设置,请点击左上角菜单:文件 -> 选项。如下图所示 - 第2步 - 点击“自定义功能区”选项卡并选中“开发工具”。然后点击“确定”。如下图所示 - 第3步 - “开发工具”功能区出现在菜单栏中。如下图所示 - 第4步 - 点击 “Visual Basic” 按钮打开VBA编辑器

  • 有没有一种方法可以在android studio或使用命令行脚本中找到并替换一个单词在整个项目中出现的所有情况(而不仅仅是使用refactor->rename的单个类),同时还可以维护大小写? 例如,供应商必须到商户,供应商->商户,供应商->商户。我的老板希望我更改供应商与商人的项目我正在工作的所有实例。我做了大约一个小时,我知道我在浪费时间。让我知道任何时候保存的建议。

  • 注释用于记录程序逻辑和用户信息,其他程序员将来可以阅读并理解相同的代码无缝工作。 它包括由开发者,修改者以及还可以包括合并逻辑的信息。 解释器在执行时忽略注释。 VBA中的注释用两种方法表示,它们分别如下 - 任何以单引号()开头的语句都被视为注释。以下是注释的一个例子。 任何以关键字开头的语句。以下是注释的一个例子。

  • 问题内容: 当我选择2个条件时,mysql总是崩溃。对我来说,这个问题很奇怪: 就是为了这张桌子 这只发生在我的笔记本上。我们有具有相同版本mysql和相同sql的测试服务器(linux)可以 仅在任何一种情况下都不会发生 我尝试删除并重新创建表,转储数据,问题仍然存在 我尝试重新安装相同版本的mysql,并在笔记本中再次发生 有人说mysql 5.6可以,我没有尝试 Mysql版本是5.7.17

  • 问题内容: 任务: 我正在将数据库从MS Access迁移到Maximizer。为此,我必须在MS ACCESS中获取64个表并将它们合并为一个表。输出必须为TAB或CSV文件的形式。然后将其导入到Maximizer中。 问题: Access无法执行看起来如此复杂的查询,因为每次运行查询时它都会崩溃。 替代方案: 我已经考虑了一些替代方案,并希望在其中选择最耗时的方案,同时还要利用任何机会学习新知