Метод SaveCopyAs не работает - PullRequest
       14

Метод SaveCopyAs не работает

2 голосов
/ 12 февраля 2012

(я неделю на английском языке, так что сначала извините за плохое объяснение: D)

Я открываю файл Excel через свое приложение .

У меня есть Add-In в Excel и кнопка на ленте для сохранения (именно такое действие сохранения выполняет кнопка Save), код события Click кнопки здесь:

Globals.ThisAddIn.Application.ActiveWorkbook.Save();

В моем приложении я назначаю метод (называемый WorkbookBeforeSave) для обработчика событий «BeforeSave» книги, который сохраняет книгу вручную в моем пользовательском каталоге.

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 не работает. (исключений не было, все коды скомпилированы и отлажены)

1 Ответ

1 голос
/ 10 августа 2012

Попробуйте отладить с try-catch, это должно быть полезно для вас.

// using interop, excel tool, interop-excel, core

public void MyBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
{
  //Globals.ThisAddIn.Application.ActiveWorkbook.SaveCopyAs(filename2); // if u use an external class to save (for threading or something else )
  this.Application.ActiveWorkbook.SaveCopyAs(filename); 

}   

Без многопоточности или задач Office 2007 превосходит - иногда - отстает или работает медленнее, чем обычно при загрузке и сохранении.

Простой saveAs() метод имеет много параметров (ищите его, вы также видите его в msdn и здесь), и он нуждается в некотором подделке пути, потому что последнее изменение пути сохранения к C # использовало путь сохранения.

Я предпочитаю решение SaveCopyAs, потому что только один параметр и быстрый и яростный. : D

...