2014-09-12 1 views
0

Visio 2013에서 매크로 또는 C# 추가 기능을 사용하여 프로그래밍 방식으로 텍스트를 바꿀 수 있습니까? 나는이 시도 :Visio에서 텍스트 바꾸기 있지만 서식 유지

Sub Replace_text() 
For Each o In Application.ActiveWindow.Selection 
o.Text = Replace(o.Text, "123", "234") 
Next 
End Sub 

을하지만 서식 즉, 이전에 내가이

AAA BBB

하지만 이후이 대체, 분실 :

을 aaa 234 bbb

알아요. 텍스트가 올바른 속성이 아닙니다. "GetFormattedText", "GetTextAsHtml"또는 "GetRichText"와 같은 것이 필요합니다.

제안 사항?

(Ctrl + H가 아닌 프로그래밍 방식이 아닙니다 ...) 많은 문서가 있으며 한 번에 여러 문자열을 바꿔야 할 필요가 있으며 일회성 작업이 아닙니다..

답변

1

모양의 텍스트가 부분적으로 서식이 지정되어있을 때 Visio가 문자를 사용하여 해당 서식을 저장하기 때문에 너무 미친 짓을하지 않고도이 문제를 해결할 수 있습니다.

Visio는 자신을 알아내는 동안 배웠던 것에서 Run이라는 비슷한 형식의 청크로 텍스트를 저장하는 것처럼 보였으므로 각 Run에 Text 값과 문자 속성 집합이 있습니다.

당신이 찾고있는 텍스트 (예 : "123")가 항상 동일한 서식을 사용한다고 가정 할 수 있다면 교체하려는 문자열의 색인을 찾을 수 있어야합니다.) InStr을 사용하여 다음과 같은 일을 할 : 당신은 당신이 대체하고있는 텍스트는 텍스트의 작은 덩어리에 대해 동일한 형식을 가지고 가정 할 수없는 경우

Dim Chars as Visio.Characters 
Set Chars = o.Characters 
Chars.Begin = instr(1 , o.Text , "123") 
Chars.End = Chars.Begin + Len("123") 
Chars.Text = "234" 

는, 당신은 먼저 있는지 확인해야합니다 쉐이프 텍스트에는 문자열이 포함되어 있으며, 텍스트가 포함 된 경우 텍스트를 캡슐화 한 실행을 찾아야 만 해당 실행 내에서 텍스트를 바꿀 수 있습니다.

+0

대단히 감사합니다! 이것은 실제로 내 문제를 완전히 해결합니다! –