【问题标题】:Alternatives for replacing text selection under Outlook with custom HTML code用自定义 HTML 代码替换 Outlook 下的文本选择的替代方法
【发布时间】:2011-09-29 08:15:48
【问题描述】:

在使用自定义 HTML 代码编辑 Outlook 电子邮件时,我需要替换用户选择。

我尝试了两种方法:

使用剪贴板

  1. 在 HTML 模式下。
  2. Word.Selection 获取Word.Range
  3. 执行range.Copy() 将其放入剪贴板
  4. inputString 转换为outputString
  5. outputString 替换选择range.PasteSpecial(...)

使用 Open XML 格式

  1. 在 HTML 模式下。
  2. Word.Selection 获取Word.Range
  3. 执行range.Copy() 将其放入剪贴板。
  4. inputString 转换为outputString(Office Open XML 格式,知道如何制作它以生成特定的 HTML)。
  5. outputString 替换选择range.InsertXML(...)

问题是:

  1. 使用剪贴板时有时会崩溃。有关于检查剪贴板状态的参考资料,但我想我已经尝试了已知的替代方法。
  2. 要使用insertXML,您需要安装Microsoft Word。您无法在单独安装 Outlook 的情况下执行insertXML。请查看:Impact of deploying Outlook 2007 without Word 2007 了解更多信息。

你知道更多的选择吗?我可以考虑像使用InsertParagraph 一样自己添加元素,但我不确定是否可以添加超链接或会遇到类似问题。

【问题讨论】:

  • 我对问题的范围感到困惑。什么是Word.Range 或者您只是说选择部分 Outlook 电子邮件进行格式化?您能否展示您当前的 VBA 以帮助我们推进这项工作?
  • 我的猜测是剪贴板由于延迟而崩溃,您是否尝试在复制和粘贴之间插入睡眠命令?

标签: vba outlook ms-word outlook-addin


【解决方案1】:

根据 msdn,HTMLEditor 一直是 deprecated in Outlook 2007 - 请参阅下面的第四节“HTML 编辑器”。

从技术上讲,您仍然可以通过 MailItem.HTMLBody 访问 HTML,但它只是一个读/写字符串值,因此您无法找出文本的哪一部分被直接突出显示。

使用MailItem.getInspector.WordEditor,您可以找出突出显示的特定文本,然后通过vba的Replace在HTMLBody中查找并替换它,并被您的html包围。

考虑到这有多复杂,您可能希望使用WordEditor 直接进行格式更改。我在您提供的链接中没有看到任何表明 WordEditor 对象在独立的 Outlook 2007 安装中不可用的内容,但我有完整的办公套件,所以我无法自己测试它。 this site 描述了如何使用 WordEditor 进行操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 2014-10-17
    • 2020-04-17
    • 2021-08-19
    相关资源
    最近更新 更多