我需要帮助,我是vba中的新词。
我有带有形状对象的word文档。 我成功获得了需要使用此行编辑的特定形状:
Dim c As Range
Set c = ActiveDocument.Shapes(1).TextFrame.TextRange
现在在我希望找到字符串并在特定字符串后添加行的范围内。
我该怎么做?
答案 0 :(得分:1)
好的,所以c
会提到你的形状
您可以使用c.Text
来获取形状中的文字。
VBA关键字Instr
返回一个字符串在另一个字符串中的起始位置
所以,如果你有一个定义为sTextToFind
的变量保持值" DEF "
- 请注意两边的空格,以便找到一个完整的单词,另一个lPos
来保存该数字的位置串。
lPos = InStr(c, sTextToFind)
将返回您的字符串中要查找的文本的位置。
然后,您可以使用LEFT
和MID
将新文本插入现有文字中,将现有文本拆开:
c.Text = Left(c, lPos + Len(sTextToFind) - 1) & "my new text " & 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
答案 1 :(得分:1)
我理解如何添加文本到形状,但我如何在不改变设计的情况下添加文本。 当我使用Darren Bartrup-Cook的代码回答它改变了形状对象的设计。
谢谢, 塔尔