2017-06-29 1 views
1

私はExcelのVSTOアドインで作業しています。そのアドインでは、後で処理するワークシートを構成します。ワークブックがアドインで構造化されているかどうか、またはワークブック上で何らかの処理を行う場合に、ユーザーがブックを開いてExcelを起動したときに、後で知りたいと思います。この目的のために、私はCustomDocumentPropertiesを使用しようとします。設定の例外Excelブックのカスタムドキュメントのプロパティ

  • のDocumentProperties変数の子供たちを評価しないのVisual Studioデバッガ、私はそれらを検査することはできません。

    は、私は2つの問題に直面しています。

  • DocumentProperties.Addを呼び出すことによって新しいDocumentPropertiyを作成しようとすると、その値が範囲にないことを示すArgumentExceptionが発生します。ワークブックを構築するために呼び出さ

機能:

public void InitWorkbook() 
{ 
    workingBook = Globals.Factory.GetVstoObject(Application.ActiveWorkbook); 
    var dps = (DocumentProperties)workingBook.CustomDocumentProperties; 
    if (!customDocumentPropertyExist("validctcwb", dps)) 
    { 
      // some sheet creation and listobject creation  
      dps.Add("validctcwb", false); 
    } 
} 

bool customDocumentPropertyExist(string name, DocumentProperties dps) 
{ 
    foreach (DocumentProperty p in dps) 
    { 
     if (p.Name == name) 
     { 
       return true; 
     } 
    } 
    return false; 
} 

あなたの貴重な助けのために事前にありがとうございます。

答えて

1

私は独自のIDを生成するために私のアドインで同じことをしています。

var propertyName = "validctcwb"; 
var propertyValue = false; 
var propertyType = MsoDocProperties.msoPropertyTypeBoolean; 
dps.Add(propertyName, false, propertyType, propertyValue); 

デバッグの間、あなたが値を確認したい場合は、以下の方法で導入することができます:それだけで正常に動作していない

public static IEnumerable<CustomProperty> GetCustomDocumentProperties(Workbook workbook) 
{ 
    foreach (CustomProperty property in workbook.CustomDocumentProperties) 
    { 
     yield return property; 
    } 
} 

ほら

+0

は、答えをいただき、ありがとうございます。 propertyValueはAddメソッドのオプションのパラメータではありませんか?なぜ私はプロパティを追加するためにそれらを提供する必要がありますか? –

+0

'linkToContent'(2番目の引数)が' false'のとき、値は必須です。 'true'なら' linkSource'が必要です。 MSDNを参照してください。https://msdn.microsoft.com/en-us/library/microsoft.office.core.documentproperties.add.aspx – adPartage

+0

ありがとうございます。 –

関連する問題