2012-02-12 3 views
1

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

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

У меня есть Addd-В в Excel и кнопку в ленте для сохранения (точно такой экономии действия, кнопку Сохранить сделать) код Нажмите кнопку события кнопки здесь:

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» метод работает правильно, но когда нажмите на моей пользовательской кнопке Save «SaveCopyAs» метод не работает. (исключение не кинул и все коды компилируется и отлаживается)

+0

Не используйте interel excel. это очень плохо. – gdoron

+1

'_excelApp.EnableEvents = false;' выглядит подозрительно. – gdoron

+0

Я согласен с вами, excel interop очень плохой. Но я должен использовать. Каковы другие доступные варианты? –

ответ

0

Try для отладки с 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); 

} 

без резьбы/многозадачности офис 2007 первенствовать - иногда - отстающий или медленнее, чем обычно при загрузке и в методе сохранения.

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

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

Смежные вопросы