一次快速将列插入到 Word 文档中的多个位置

一次快速将列插入到 Word 文档中的多个位置

我有一份用 MS Word 2016 编写的多项选择题考试,问题格式如下:

  1.  Question text that is usually long enough to cross the entire page
  A. Answer Choice 1
  B. Answer Choice 2
  C. Answer Choice 3
  D. Answer Choice 4
  E. Answer Choice 5

我想找到一种方法来快速将答案(A:E)转换为列格式以节省空间。

  • 然而,问题行必须保持单一(实际上,) 列,以便它们可以延伸到整个页面。

最终结果看起来与此类似:

  1.  Question text that is usually long enough to cross the entire page
  A. Answer Choice 1      C. Answer Choice 3        E. Answer Choice 5
  B. Answer Choice 2      D. Answer Choice 4
  
  2.  Next question....

我发现我可以使用查找和替换快速插入分栏符的工具(^n)。

  • 例如,查找:^pC.;替换:^nC.

但是,这只会将行移动C到新页面而不是新列。我猜问题是我还没有现成的列格式结构。

有没有办法可以快速将列格式添加到我的所有答案行,但不添加到我的问题行?

答案1

如果您可以接受以下格式...

  1.  Question text that is usually long enough to cross the entire page
  A. Answer Choice 1      B. Answer Choice 2      C. Answer Choice 3
  D. Answer Choice 4      E. Answer Choice 5    

只需选择五个答案并使用“插入”选项卡和“表格”菜单按钮上的“将文本转换为表格”功能即可实现。然后从打开的对话框中选择 3 列、2 行表格布局。

如果您必须使用您发布的布局,那么您需要一个宏来将五个潜在选项格式化为表格布局。当您选择五个选项然后执行宏时,以下宏将执行此操作。

Sub ConvertToTable()
    Dim rng As Word.Range, tbl As Word.Table
    Dim iRng As Word.Range
    Set rng = Selection.Range
    Selection.Collapse Word.WdCollapseDirection.wdCollapseEnd
    Set tbl = Selection.Tables.Add(Selection.Range, 2, 3)
    Set iRng = rng.Paragraphs(1).Range
    iRng.MoveEnd wdCharacter, -1
    tbl.Range.rows(1).Cells(1).Range.FormattedText = iRng.FormattedText
    Set iRng = rng.Paragraphs(2).Range
    iRng.MoveEnd wdCharacter, -1
    tbl.Range.rows(2).Cells(1).Range.FormattedText = iRng.FormattedText
    Set iRng = rng.Paragraphs(3).Range
    iRng.MoveEnd wdCharacter, -1
    tbl.Range.rows(1).Cells(2).Range.FormattedText = iRng.FormattedText
    Set iRng = rng.Paragraphs(4).Range
    iRng.MoveEnd wdCharacter, -1
    tbl.Range.rows(2).Cells(2).Range.FormattedText = iRng.FormattedText
    Set iRng = rng.Paragraphs(5).Range
    iRng.MoveEnd wdCharacter, -1
    tbl.Range.rows(1).Cells(3).Range.FormattedText = iRng.FormattedText
    rng.Delete
    rng.Select
    Selection.Delete
End Sub

该宏快速而又粗糙,这意味着可能有更优雅的方式来编码它......但它有效。

相关内容