Word .doc (Word 97 - 2003) で既存のカスタム プロパティをプログラムで更新しようとしています。最初は Aspose で解決しましたが、ライセンスが限られているため、このプロジェクトでは使用できません。
このコードは、エクセルの代わりにワードのマイナーな変更を加えて、ここから大規模に取得されます プログラムによる Excel カスタム ドキュメント プロパティへのアクセス.
最初の方法は、カスタム プロパティが存在しない場合に追加するために機能し、2 番目の方法はカスタム プロパティを取得できます。既に存在するプロパティを更新する方法がわかりません。InvokeMember() の動詞と関係があるのではないかと思いますが、あまりドキュメントが見つかりません。
public void SetDocumentProperty(string propertyName, string propertyValue)
{
object oDocCustomProps = oWordDoc.CustomDocumentProperties;
Type typeDocCustomProps = oDocCustomProps.GetType();
object[] oArgs = {propertyName,false,
MsoDocProperties.msoPropertyTypeString,
propertyValue};
typeDocCustomProps.InvokeMember("Add",
BindingFlags.Default | BindingFlags.InvokeMethod,
null,
oDocCustomProps,
oArgs);
}
public object GetDocumentProperty(string propertyName, MsoDocProperties type)
{
object returnVal = null;
object oDocCustomProps = oWordDoc.CustomDocumentProperties;
Type typeDocCustomProps = oDocCustomProps.GetType();
object returned = typeDocCustomProps.InvokeMember("Item",
BindingFlags.Default |
BindingFlags.GetProperty, null,
oDocCustomProps, new object[] { propertyName });
Type typeDocAuthorProp = returned.GetType();
returnVal = typeDocAuthorProp.InvokeMember("Value",
BindingFlags.Default |
BindingFlags.GetProperty,
null, returned,
new object[] { }).ToString();
return returnVal;
}