(私は英語が苦手なので、まず説明が下手ですみません :D )
アプリケーションで Excel ファイルを開きます。
Excelにアドインがあり、リボンに保存用のボタンがあります(保存ボタンが行う保存アクションとまったく同じです)ボタンのクリックイベントのコードは次のとおりです。
Globals.ThisAddIn.Application.ActiveWorkbook.Save();
私のアプリケーションでは、ワークブックを手動でカスタム ディレクトリに保存するワークブックの「BeforeSave」イベント ハンドラにメソッド (WorkbookBeforeSave と呼ばれる) を割り当てます。
private void WorkbookBeforeSave(bool saveasui, ref bool cancel)
{
_excelApp.EnableEvents = false;//_excelApp is my Excel Application
if (!_excelWorkbook.Saved)//_excelWorkbook is Active Excel Workbook
{
_excelWorkbook.SaveCopyAs(_savedFilePath);//_savedFilePath is my custom directory
_excelWorkbook.Saved = true;
}
cancel = true;
_excelApp.EnableEvents = true;
}
問題は、元の Excel 保存ボタンをクリックすると「SaveCopyAs」メソッドが正しく機能しますが、カスタム保存ボタンをクリックすると「SaveCopyAs」メソッドが機能しないことです。 (例外はスローされず、すべてのコードがコンパイルおよびデバッグされました)