Взаимодействие Word и Excel: не удается закрыть книгу Excel, встроенную в документ Word - PullRequest
0 голосов
/ 21 марта 2020

Я получил ошибку, когда закрываю книгу Excel, встроенную в документ Word. Этот документ получил только одну таблицу Excel. Ничего другого: тексты, и т. Д. c ...

Это код:

Application _application = new Application
{
    Visible = false,
};
object oFilename = fileName;
object oFormat = WdOpenFormat.wdOpenFormatXMLDocument;
_document = _application.Documents.Open(
     ref oFilename, ref _missing, ref _faux, ref _missing, ref _missing, ref _missing,
     ref _missing, ref _missing, ref _missing, ref oFormat, ref _missing, ref _faux,
     ref _missing, ref _missing, ref _missing, ref _missing);

_document.Activate();

InlineShape shape1 = _document.InlineShapes[1];
Microsoft.Office.Interop.Word.Chart chart1 = shape1.Chart;
Workbook wb1 = chart1.ChartData.Workbook;
wb1.Application.WindowState = XlWindowState.xlMinimized;
Worksheet ws1 = wb1.Worksheets["Graphe"];
ws1.Cells[2, "A"].Value = 1000;

// --- THIS IS THE LINE WHICH HANDLE EXCEPTION
wb1.Close(Type.Missing, Type.Missing, Type.Missing);
// ---

_document.Close(ref _missing, ref _missing, ref _missing);
_application.Application.Quit(ref _missing, ref _missing, ref _missing);

Давайте рассмотрим исключение (кажется бесполезным ..): Исключение из HRESULT: 0x800A03E C

Трассировка стека:

à Microsoft.Office.Interop.Excel._Workbook.Close(Object SaveChanges, Object Filename, Object RouteWorkbook)
à TestFile.Program.Main(String[] args) dans C:\[Users..]\MyProject\Program.cs :ligne 53

Спасибо за помощь, С уважением

1 Ответ

0 голосов
/ 21 марта 2020

Я нашел обходной путь ...

Заменить:

wb1.Close(Type.Missing, Type.Missing, Type.Missing);

На:

wb1 = null;

/! \ НО будьте осторожны об утилизации wb1, потому что мы все еще говорим о COM-объекте

...