Windows7(64bit)では、dsofile.dllが使えないようだったので、別の方法で、Officeファイルの詳細を変更した。
実装方法
- 普通にC#のWindowsアプリケーションのプロジェクトを作成する。
- [参照設定]の[.NET]タブから以下を追加する。バージョンを一致させないとエラーになるので注意。
- Microsoft.Office.Interop.Word
- Office
- プログラム内に以下を追加する。
using Word = Microsoft.Office.Interop.Word; using Office = Microsoft.Office.Core;
- Wordを起動するコード
Word.Application appWord = new Word.Application();
- Wordファイルを開く
appWord.Documents.Open(ファイル名);
- ファイルの詳細の作成者を参照する
MessageBox.Show(appWord.ActiveDocument.BuiltInDocumentProperties["Author"].Value);
- ファイル詳細の製作者を書き換える
appWord.ActiveDocument.BuiltInDocumentProperties["Author"].Value="新しい作成者";
- 保存
appWord.ActiveDocument.Save();
- Wordを閉じる
appWord.Quit(Word.WdSaveOptions.wdDoNotSaveChanges);
appWord = null;
- 読み込ませるWord文章に何も書かれていないと修正が反映されないので注意!!
注意点
- BuiltInDocumentPropertiesへのアクセス
- VisualStudio2010では型キャストは不要。
- .Valueの付け忘れ。
- 変数に入れる場合は、dynamic型を利用する。
- 修正がうまくいかない
- ドキュメントに何も書かれていないとうまくいかない。空白や改行を入れる。
PowerPointとExcel
PowerPointやExcelの場合は、以下を追加する。
- 参照
- Microsoft.Office.Interop.PowerPoint
- Microsoft.Office.Interop.Excel
- using宣言
- using Excel = Microsoft.Office.Interop.Excel;
- using PowerPoint = Microsoft.Office.Interop.Word;
- BuiltInDocumentPropertiesへのアクセス
- appExcel.ActiveWorkbook.BuiltinDocumentProperties[属性].Value
- appPP.Presentations[1].BuiltInDocumentProperties[属性].Value