【问题标题】:Troubleshooting Large Macro for Word 2016Word 2016 大宏疑难解答
【发布时间】:2020-07-06 23:52:58
【问题描述】:

我正在尝试为 Word 2016 创建一个,它将根据我使用“查找和替换”功能更改的大约 250 个搜索词的列表自动编辑文档。当我从头到尾录制宏并尝试运行时,我收到一条消息说“过程太长”。我已经查看了此处的答案并了解您可以清理一些代码和/或在代码中创建子部分以进行故障排除。但是,我不确定自己在做什么,而且代码很长。

有人可以帮帮我吗?

部分代码如下:

Portion of code

【问题讨论】:

  • 下面附上部分代码:
  • 请附上代码,而不是代码图片。图片通常难以阅读,并且无法复制/粘贴代码进行测试。请花点时间阅读在help center 中发布问题的指南。
  • 代码不属于图像。请参阅 [this Meta answer](v) 了解原因列表。另外,正如现在所说,您的帖子太模糊了。如果录制宏时遇到过长错误,请将其分解为单独的操作,并为每个部分录制宏,然后您可以编写一个子程序按顺序执行这些宏。
  • @KenWhite 我看到有人说你可以做到这一点,我已经尝试过,但没有成功。 start end 完成一个动作的适当的开始和结束代码是什么(你把它们放在哪里?)。我认为我尝试过的是将 Proc1()、Proc2() 等放在开头的公共代码之后,然后是 subproc1()、subproc2() 等。之后,每个都以结束子结束。
  • 您在录制宏时分解任务,而不是在宏本身中。例如,如果任务是选择三个段落,将它们复制到新文档并更改某些格式,则记录三个宏(一个用于选择,一个用于复制,一个用于格式化),然后创建一个新的子调用选择宏,然后是复制宏,然后是格式化宏。然后你只执行那个新的子。我不能确切地告诉你应该如何分解你的任务,因为我不知道你的任务的细节。您应该能够确定如何将其分解为单位。

标签: vba ms-word


【解决方案1】:

将您的宏分解为多个步骤。最简单的方法是(使用您的文档的副本进行测试,这样如果您犯了错误,您可以随时将原始文本放回原处!):

  • 录制一个简短的宏。它做什么都没关系。将其命名为 DoAllReplacements

  • 录制一个宏来执行您的第一个替换块。将其命名为 DoReplacement1

  • 查看宏,并编辑 DoReplacement1 宏。将注释块末尾的所有文本复制到 End Sub 之前的行。

  • 将编辑插入符号(光标)放在 DoReplacement1 End Sub 的末尾,然后按两次 Enter。输入以下文本:

    Sub DoReplacement2()
    
    End Sub
    
  • 将剪贴板中的代码粘贴到您刚刚添加的SubEnd Sub 行之间。编辑宏代码以进行下一个替换块。

  • 重复上述步骤,直到您对所有替换项进行编码,根据需要使用尽可能多的新 DoReplacementX 例程。

  • 回到您录制的第一个宏 (DoAllReplacements),并删除 Sub DoAllReplacements()End Sub 之间的所有代码。向您编写的单个 DoReplacementX 宏添加新调用。

    Sub DoAllReplacements()
        DoReplacement1
        DoReplacement2
        DoReplacement3
        ' Etc. until you've added them all
    End Sub
    

退出宏代码窗口。使用View Macros,选择您的DoAllReplacements 宏并执行它。

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2014-08-29
    • 2011-10-27
    相关资源
    最近更新 更多