【问题标题】:Formatting text from Mulitline text box in word with VBA使用VBA在word中格式化多行文本框中的文本
【发布时间】:2009-11-23 15:25:13
【问题描述】:

我正在 Word 中组合一个模板,使用一个表单供用户填写,然后填充一些文档。

我目前坚持的一点是在文档的末尾,其中列出了抄送。

表单有一个多行文本框,用户可以在其中输入抄送,每行一个。

然后我想将文本框的内容添加到文档的末尾,但格式正确。具体来说,它应该如下所示:

cc:    First CC contact
       Second CC contact
       so on and so forth

我尝试使用 2 个书签来执行此操作,所以我目前的代码是:

' If 'CC' box has content, add it
If doc_CC.TextLength > 0 Then
    .Bookmarks("CC").Range.Text = vbCr + "cc:"
    .Bookmarks("CCs").Range.Paragraphs.Indent
    .Bookmarks("CCs").Range.Text = doc_CC + vbCr
End If

但是,当它运行时,在页面上它看起来像:

       cc:     first contact
       second contact
       and so on

意识到 2 书签方法有点混乱,但在当时似乎是个好主意 - 显然情况并非如此!已经做了一些寻找使用 Split 的方法,但在这条道路上没有取得太大进展 - 怀疑我在谷歌搜索错误的东西。

如何做到这一点,以使格式符合要求?非常感谢任何帮助。

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    尝试插入制表符? + Chr(9) 甚至 + vbTab 都可以。

    【讨论】:

    • 我尝试使用制表符而不是段落缩进。第一行看起来不错,但后续行没有缩进(这是一个惊喜 - 它的行为与您手动输入文档的行为不同 - 如果您使用 tab,然后按 enter,您的下一行将被 tabtab。当在vba中添加tab,情况并非如此。下一行将默认回到左边距。
    • 为什么不为每一行插入一个制表符?
    【解决方案2】:

    找到了一种解决方法,虽然没有回答如何做到这一点的实际问题,但确实会产生相同效果的结果。

    使用了一个没有行的 2 列表,a1 的内容是“cc:”,a2 的内容是输入到多行文本框中的任何内容。如果文本框中没有任何内容,则删除表格。

    我会继续关注这个问题,所以如果有人确实有正确的答案,我可以相应地标记它。

    【讨论】:

      【解决方案3】:

      另一种可能性是使用悬挂缩进格式化 cc 段落(如用于项目符号或编号)。使用换行符 - Chr(11) - 而不是 vbcr 来分隔每个条目。文字应该全部排好,然后...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多