2017-02-28 1 views
1

도움이 필요합니다. vba 단어가 새로워졌습니다.VBA 단어에서 단어를 찾은 후 문자열 삽입

도형 개체가있는 단어 문서가 있습니다. 내가 문자열을 찾아 특정 문자열 뒤에 줄을 추가 할 범위에서 이제

Dim c As Range 
Set c = ActiveDocument.Shapes(1).TextFrame.TextRange 

: I의 성공은 내가이 줄을 편집 할 필요가 특정 모양을 얻을 수 있습니다.

어떻게하면됩니까?

+4

안녕 탈은, 불행하게도 그것은 아니다. 너는 너 자신에게 그것을 줄 필요가있다. 당신이 그것에 가서 아직도 그것을 할 수 없다면 당신은 당신이 시도한 것을 보여주기 위해 질문을 업데이트 할 필요가 있습니다. 우리는 기꺼이 도와 드리겠습니다. – CallumDA

+0

제 질문을 편집합니다. 나는 그것이 더 분명하기를 바란다. –

답변

1

내가 추가하는 방법을 이해 텍스트 모양,하지만 어떻게 디자인을 변경하지 않고 텍스트를 추가 할 수 있습니다. Darren Bartrup-Cook의 코드를 사용하여 모양 객체의 디자인이 변경되었습니다. 그것이 어떻게 작동하는지

before add text

after add text

감사

, 탈

0

좋아, 그래서 c 귀하의 모양에 대한 참조를 보유하고 있습니다.
c.Text을 사용하여 도형의 텍스트를 가져올 수 있습니다.

VBA 키워드 Instr은 한 문자열의 시작 위치를 다른 문자열의 시작 위치로 반환합니다.
변수가 " DEF "sTextToFind으로 정의 된 경우 양쪽 단어의 공백을 확인하여 전체 단어를 찾고 lPos은 해당 문자열의 숫자 위치를 나타냅니다.

lPos = InStr(c, sTextToFind)은 검색 할 텍스트가 문자열에서 시작되는 위치로 되돌아갑니다.

그런 떨어져 기존 텍스트 분할 LEFTMID를 사용하여 기존 텍스트로 새로운 텍스트를 삽입 할 수 있습니다
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