删除除每个段落中第一个单词以外的所有内容

时间:2014-01-22 00:14:39

标签: vba ms-word

我有一长串的帐户标签,我需要格式化联系信息,只留下名称(每个段落中的第一个单词)。我有一些VBA excel的经验,但这是我第一次涉足这个词。

所以我要做的就是删除第一个单词之后的所有内容,但是如果可能的话,保留所有段落中断(无论是谁使列表格式化它都有很多中断,而不是间距)。

提前感谢!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情,根据需要进行修改。不是100%肯定它会保留你的分段符号,但这至少应该让你到每个段落中的“第一个单词”列表。

Sub FirstWord()
 Dim myString$
 Dim MyDoc As Document
 Dim DocPara As Paragraph
 Dim i%
 Dim p%
 Set MyDoc = ActiveDocument

 For p = MyDoc.Paragraphs.Count To 1 Step -1
     Set DocPara = MyDoc.Paragraphs(p)
     i = InStr(1, DocPara.Range.Text, " ")
     DocPara.Range.Text = _
        Left(DocPara.Range.Text, i) & Right(DocPara.Range.Text, 1)

 Next

End Sub

<强>已更新

要解决缩进每个段落的前导空格,请尝试使用此方法。我将修改上面的例程,以便您可以看到对此代码的一些更改以及我如何调整它。我还没有测试过这个版本,知道是否有任何问题。

Sub FirstWordIndented()
 Dim myString$
 Dim x%               '<-- this is new
 Dim MyDoc As Document
 Dim DocPara As Paragraph
 Dim i%
 Dim p%
 Set MyDoc = ActiveDocument

 For p = MyDoc.Paragraphs.Count To 1 Step -1
     Set DocPara = MyDoc.Paragraphs(p)

     '// Make sure to ignore leading spaces
     '// This block should remove leading spaces
         myString = DocPara.Range.Text
         Do 
            If Not Left(myString,1) = " " Then Exit Do
           '// Removes the first character if it's a space
            myString = Right(myString, Len(myString) - 1)
         '// Loop until the first character isn't a space
         Loop 

     '// Some small modifications to use the myString variable in this block:
     i = InStr(1, myString, " ")
     DocPara.Range.Text = _
        Left(myString, i) & Right(myString, 1)

 Next

End Sub

<强> BEFORE

enter image description here

<强> AFTER

enter image description here