我正在为我的组织开展迁移项目,该项目将我们的员工从Word Perfect Office套件转换为Microsoft Office,特别是WordPerfect转换为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
由于这封信或多或少是流程的开始,因此它包含需要使用一两次的数据。目前,我可以去Mailings>信封并调出窗口,有时会从文档中提取第一个地址。它并不总是像输入的那样拉出整个地址块,并且一旦打印出第一个信封。用户必须手动将剩余的地址块一次一个地复制并粘贴到新的信封和标签框中。我们的信封已预先打印,只需要包含信中的个别地址。
我想尝试做的是以下任何选项或它们的组合:
允许用户手动突出显示文本,触发宏根据粘贴了所选文本的模板打开新文档。如果我可以定义边距,我也很乐意打开一个新的空白文档和创建的其他页面设置属性,然后粘贴到选定的地址块中。我只知道使用" Documents.Add Template:="模板的路径"用于打开基于模板的新文档。我不知道如何粘贴传递突出显示的文本。
创建一个正则表达式模式,可以通过邮政编码识别并选择空白行后面的每个地址。我能够找到一个正则表达式模式,可以识别邮政编码和随后的可选4位数字
(\d{5}(-\d{4})?)
我不知道如何扩展范围以包含邮政编码之前的所有信息行,但使用空白行作为边界。
对我来说,锦上添花就是使用正则表达式模式来查找每个地址块,然后运行循环以打开具有已定义属性的新文档或基于模板的新文档,然后插入每个地址最后一个分页符。最后一个地址不应该有分页符。
如果有人能够帮我解决这个问题,我将非常乐意通过捐赠您的事业或代表您的组织来感谢您。编程从来就不是我的强项,这个挑战让我在夜间保持清醒,试图弄明白。
答案 0 :(得分:0)
这是一个非常广泛的问题 - 对于SO来说可能过于宽泛
对于项目#2,如何左右
(\r\r.+\d{5}(-\d{4})?)