모양의 텍스트에 액세스하는 주요 속성은 두 가지가 있습니다. 하나는 Shape.Text
이고 다른 하나는 Shape.Characters
입니다. 후자는 텍스트를 읽고 조작하기위한 여러 멤버가있는 Characters
개체를 반환합니다.
확장 된 필드를 포함하여 전체 텍스트를 반환하는 Characters.Text
속성이 있습니다. 이 같은 세 가지 형태가있는 경우
그래서 :

을 ... 다음이 코드를 실행
void Main()
{
var vApp = MyExtensions.GetRunningVisio();
var vPag = vApp.ActivePage;
foreach (Visio.Shape shp in vPag.Shapes)
{
Console.WriteLine($"Text: {shp.Text} \nCharacters: {shp.Characters.Text}\n");
}
}
을 ... 당신은 다음과 같은 결과를 얻을 수 있습니다 :
텍스트 : 모양이없는 필드 1
문자 : 모양 아니오 필드 1
텍스트 : 한 문서 필드 모양 2 ]
문자 : 한 문서 필드 모양 2 [02A]
텍스트 : 날짜 필드 모양 3 ]
문자 : 날짜 필드 [2017년 (월요일) 11월 20일 여기서
당신이 Shape.Text
이 축소 된 필드를 반환하고 Shape.Characters.Text
확장 된 버전을 반환하는 것을 볼 수와 모양 3.
GetRunningVisio
가 LinqPad로 사용하는 내 확장 방법입니다 것으로 도시 :
http://visualsignals.typepad.co.uk/vislog/2015/12/getting-started-with-c-in-linqpad-with-visio.html
이 ...하지만 당신은 응용 프로그램 개체를 잡아 어떻게 당신에게 달려 있습니다. 나는 이런 식으로 뭔가를 할 것이다 사용자 세포를 설정하는 방법에 대한 두 번째 질문에 대한
:
const string targetCellName = "User.mycustomproperty";
var docSheet = vDoc.DocumentSheet;
if (docSheet.CellExistsU[targetCellName, (short)0] != 0)
{
vDoc.DocumentSheet.CellsU[targetCellName].FormulaU = @"=""04a""";
}
우수, 땜질 및 조언의 약간의 비트, 나는 모든 것을 제압했습니다.이것은 정말 지루한 수작업으로 많은 시간을 절약 해주었습니다. – SamAPOC