在vba word中查找单词后插入字符串
我需要帮助,我有一个新的vba单词 我有word文档和形状对象。 我成功获得了需要使用以下行编辑的特定形状:在vba word中查找单词后插入字符串,vba,ms-word,Vba,Ms Word,我需要帮助,我有一个新的vba单词 我有word文档和形状对象。 我成功获得了需要使用以下行编辑的特定形状: Dim c As Range Set c = ActiveDocument.Shapes(1).TextFrame.TextRange 现在在这个范围内,我想找到字符串并在特定字符串后面添加行 我该怎么做呢?好的,c保存了对您形状的引用。 您可以使用c.text获取形状中的文本 VBA关键字Instr返回一个字符串在另一个字符串中的起始位置。 因此,如果您有一个定义为sTextToFi
Dim c As Range
Set c = ActiveDocument.Shapes(1).TextFrame.TextRange
现在在这个范围内,我想找到字符串并在特定字符串后面添加行
我该怎么做呢?好的,
c
保存了对您形状的引用。您可以使用
c.text
获取形状中的文本
VBA关键字Instr
返回一个字符串在另一个字符串中的起始位置。因此,如果您有一个定义为
sTextToFind
的变量来保存值“DEF”
——请注意两边的空格,以便它找到一个完整的单词,另一个lPos
来保存该字符串的数字位置
lPos=InStr(c,sTextToFind)
将返回要查找的文本在字符串中的起始位置
然后,您可以使用LEFT
和MID
将新文本插入现有文本,以将现有文本分开:c.Text=Left(c,lPos+Len(sTextToFind)-1)和“我的新文本”以及Mid(c,lPos+Len(sTextToFind))
因此,您的更新代码:
'Shape(1) holds "ABC DEF GHI JKL MNO"
Sub Test()
Dim c As Range
Dim lPos As Long
Dim sTextToFind As String
sTextToFind = " DEF "
Set c = ActiveDocument.Shapes(1).TextFrame.TextRange
lPos = InStr(c, sTextToFind) 'Returns position 4 (the space between C & D).
'Returns "ABC DEF my new text GHI JKL MNO"
c.Text = Left(c, lPos + Len(sTextToFind) - 1) & "my new text " & Mid(c, lPos + Len(sTextToFind))
End Sub
我知道如何将文字添加到形状中,但我知道如何在不改变设计的情况下添加文字。 当我和Darren Bartrup Cook的代码一起使用时,答案是改变形状对象的设计 谢谢,
好未来好未来,不幸的是,它不是这样工作的。你需要自己试一试。如果你想尝试一下,但仍然做不到,那么你只需要更新你的问题,向我们展示你的尝试,我们将非常乐意提供帮助。我编辑了我的问题。我希望它更清楚。