6

C# コードで作成している Word ドキュメントのカスタム ドキュメント プロパティを設定したいと考えています。これを行うために、この MSDN の記事に従って、次のコードを思いつきました。

using Word = Microsoft.Office.Interop.Word; // Version 12.0.0.0
word = new Word.Application();
word.Visible = false;
Word._Document doc = word.Documents.Add(ref missing, ref missing, ref missing, ref missing);
logger.Info("Setting document properties");
Core.DocumentProperties properties = (Core.DocumentProperties)doc.BuiltInDocumentProperties;
properties["Codice_documento"].Value = args[3];
properties["Versione_documento"].Value = args[4];

残念ながら、コードに到達するたびにこのエラーが発生します。

HRESULT: 0x80004002 (E_NOINTERFACE)

何故ですか?MSDN に記載されているとおりにインターフェイスを使用しましたが、なぜ機能しないのですか?

Office 2010 と .net 3.5 で Interop を使用しています

4

4 に答える 4

5

CustomDocumentPropertiesではなく、を使用する必要がありますBuiltInDocumentPropertiesWordでのカスタムドキュメントプロパティの使用に関するMSDNリファレンスおよびMSDNビデオはこちら)を参照してください。また、値を割り当てる前に、プロパティが存在するかどうかを確認して作成する必要があります。

Core.DocumentProperties properties = (Core.DocumentProperties)this.Application.ActiveDocument.CustomDocumentProperties;
if (properties.Cast<DocumentProperty>().Where(c => c.Name == "DocumentID").Count() == 0)
  properties.Add("DocumentID", false, MsoDocProperties.msoPropertyTypeString, Guid.NewGuid().ToString());
var docID = properties["DocumentID"].Value.ToString();
于 2012-10-02T13:03:40.987 に答える