我有一长串的帐户标签,我需要格式化联系信息,只留下名称(每个段落中的第一个单词)。我有一些VBA excel的经验,但这是我第一次涉足这个词。
所以我要做的就是删除第一个单词之后的所有内容,但是如果可能的话,保留所有段落中断(无论是谁使列表格式化它都有很多中断,而不是间距)。
提前感谢!
答案 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 强>
<强> AFTER 强>