关于 vba:使用多个不连续选择

Working with multiple discontinuous selection

我正在尝试通过多项选择来做某事。我想在每个选定的段落之前添加一些文本,但是当我选择多个不连续的段落时,如果我执行 Selection.Paragraphs.Count 我总是得到"1"。

我怎样才能分开所有段落?

示例:

1
2
3
Paragraph1(Selected first)
Paragraph2
Paragraph3(Selected second)

当我尝试在这些段落的开头添加一些文本时得到了什么:

1
2
3
Paragraph1
Paragraph2
TEXTParagraph3

我真正想要得到的东西:

1
2
3
TEXTParagraph1
Paragraph2
TEXTParagraph3

我是这样工作的:

1
2
3
4
5
6
sub x()
  dim p as paragraph
  for each p in selection.paragraphs
    p.range.insertbefore("TEXT")
  next
End sub


Word 根本无法做您希望它做的事情。自从 2003 年推出多项选择以来,开发人员一直希望这样做(我认为是,可能是 2007 版)。 Word\\ 的对象模型根本不支持它。

如果这是您想提供给用户以使生活更轻松的东西,您需要为该工具提供一种标记段落的方法,以便您的代码能够识别它们。例如,您可以提供一个宏,为每个选择分配一个递增的书签名称(用户选择,然后运行您的宏;对每个段落重复)。然后,您的代码可以寻址每个书签并执行操作。为了使这更加用户友好,您可以将宏分配给键盘快捷键和/或功能区/QAT 和/或右键菜单中的按钮。