シェイプのテキストにアクセスするための主なプロパティは2つあります.1つはShape.Text
、もう1つはShape.Characters
です。後者は、Characters
オブジェクトを返します。このオブジェクトには、テキストを読み込んで操作するためのメンバーが多数存在します。
これらのうち、拡張フィールドを含むテキスト全体を返すCharacters.Text
プロパティがあります。あなたはこのような3つの形状がある場合
ので、:
を...そして、このコードを実行します。
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
文字:シェイプDOCフィールド有する形状2 []
文字:DOCフィールド有する形状2 [02A]
本文:日時フィールドと形状3 []
ないフィールド
テキストを1
文字:日時フィールドを持つ形状3 [2017年11月20日(月曜日)]
ここでは、Shape.Text
が折りたたまフィールドを返し、Shape.Characters.Text
が拡張バージョンを返すことがわかります。
http://visualsignals.typepad.co.uk/vislog/2015/12/getting-started-with-c-in-linqpad-with-visio.html
...しかし、それはあなたがアプリケーションオブジェクトのホールドを取得する方法あなた次第です:GetRunningVisio
はLinqPadで使用するための私の拡張メソッドであることを
注意。その後、私はこのような何かをするだろうユーザセルの設定についてのあなたの2番目の質問については
:
const string targetCellName = "User.mycustomproperty";
var docSheet = vDoc.DocumentSheet;
if (docSheet.CellExistsU[targetCellName, (short)0] != 0)
{
vDoc.DocumentSheet.CellsU[targetCellName].FormulaU = @"=""04a""";
}
優れ、工夫やアドバイスのわずかなビットで、私はすべてを並べ替えることができました。これは、本当に退屈な手作業をしていて、時間を節約しました。 – SamAPOC