Использование ExcelSession.Workbook.Open из Delphi с Excel 365 приводит к появлению рабочего листа - PullRequest
0 голосов
/ 12 марта 2020

Имеется простой фрагмент кода для открытия книги Excel и подсчета используемых столбцов и строк:

procedure GetWorksheetSize(const AFilename: String; var AUsedColumns, AUsedRows: Integer);
var
  ExcelSession, ExcelWorkbook, ExcelSheet: Variant;
begin
  ExcelSession := CreateOLEObject('Excel.Application');
  ExcelSession.Visible := false;
  ExcelSession.UserControl := false;
  ExcelSession.Workbooks.Open(AFilename);
  ExcelWorkbook := ExcelSession.Workbooks[1];
  ExcelSheet := ExcelWorkbook.ActiveSheet;
  AUsedColumns := ExcelSheet.UsedRange.Columns.Count;
  AUsedRows := ExcelSheet.UsedRange.Rows.Count;
  ExcelWorkbook.Close;
  ExcelSession.Quit;
  ExcelSession := UnAssigned;
  ExcelWorkbook := UnAssigned;
  ExcelSheet := UnAssigned;
end;

Не имеет значения, пишу ли я это в Delphi 2005, XE2 или 10,3 , результат тот же; для Excel 2013, 2016 и 2019 процедура заполняет параметры так, что пользователь не видит книгу. Для Excel 365 рабочая книга ненадолго появляется (без окна / ленты приложения Excel ), а затем исчезает.

Кто-нибудь знает, как остановить отображение рабочей книги ? В Workbooks.Open нет параметра, который бы указывал, чтобы он открывался без его показа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...