【发布时间】:2020-07-07 05:19:59
【问题描述】:
我正在为我的组织开展一个迁移项目,该项目将我们的员工从 Word Perfect Office 套件迁移到 Microsoft Office,特别是 WordPerfect 到 Word。不幸的是,word 中的宏非常依赖于不会转移到 Word 中的宏。虽然正在逐步取得进展,但我遇到了一些障碍,我不确定我是否能用 vba、宏或正则表达式克服这些障碍,尤其是因为我对它们中的任何一个都不够精通。
-
创建了一个非常常用的正式信函模板以发送给外部联系人。这通常是将新客户添加到我们的服务系统的第一步或第二步。在这封信中,秘书在页面顶部添加了一个自动文本条目,然后是几个输入键。紧随其后的是,以类似于以下格式添加 1 到 3 或 4 个地址:
Letter Head block of Primary account handler (inserted by autotext) (Multiple Blank Lines) (blank line)(Each line of address is ended with the enter keystroke) 1st Company Name (If exists)(Sometimes includes right-align tabstop for email) Attn to or Individual Street Address Suite or Apt # (If exists) City, State, ZIP-#### (The zip extension is not always included) (blank line) 2nd Company Name (If exists)(Sometimes includes right-align tabstop for email) Attn to or Individual Street Address Suite or Apt # (If exists) City, State, ZIP-#### (The zip extension is not always included) (blank line) 3rd Address Block and so on... (blank line) (blank line) Dear, Primary Addressee of Letter
由于这封信或多或少是一个过程的开始,它包含需要再使用一两次的数据。目前在 word 中,我可以转到 Mailings > Envelopes 并打开有时会从文档中提取第一个地址的窗口。它并不总是按输入的方式提取整个地址块,并且一旦打印了第一个信封。用户必须手动将剩余的地址块一次一个地复制并粘贴到新的信封和标签框中。我们的信封是预先印好的,只需要包含信件中的各个地址。
我想做的是以下任何一个选项或它们的组合:
允许用户手动突出显示文本,触发宏打开一个基于模板的新文档,其中粘贴了所选文本。如果我可以定义页边距,我也会很高兴打开一个新的空白文档和其他页面设置属性,因为它被创建,然后粘贴到选定的地址块中。我只知道使用“Documents.Add Template:="path to template" 来打开基于模板的新文档。我不知道如何粘贴突出显示的文本。
-
创建一个正则表达式模式,该模式可以通过邮政编码识别和选择空行之后的每个地址。我能够找到一个正则表达式模式,可以识别邮政编码和可选的 4 位数字,即
(\d{5}(-\d{4})?)我不确定如何扩展范围以包括使用空行作为边界的邮政编码之前的所有信息行。
对我来说,锦上添花是使用正则表达式模式查找每个地址块,然后运行循环以打开具有已定义属性的新文档或基于模板的新文档,然后插入每个地址最后有一个分页符。最后一个地址不应该有分页符。
如果有人能够帮助我解决这个问题,我将非常乐意代表您向您的事业或组织捐款来感谢您。编程从来都不是我的强项,这个挑战让我夜不能寐,试图弄清楚。
【问题讨论】:
标签: regex vba ms-word word-2010