Interop Excel дает нулевой на листе, когда Excel открывается программой - PullRequest
0 голосов
/ 01 июля 2019

Я не могу получить доступ к Excel Worksheet, когда Excel открывается программой (автоматизация).Это дает System.NullReferenceException

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

Excel.Application excel;
            excel = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application") as Excel.Application;
            Excel.Workbook WB;
            Excel.Worksheet xlWorksheet;

            xlWorksheet = (Excel.Worksheet)excel.ActiveSheet;  //error line

            Excel.Range xlRange = xlWorksheet.UsedRange;
            ...
            ...

Обратите внимание, что эта строка excel = System.Runtime.InteropServices.Marshal.. проходит отладку, даже если Excelоткрыт программойОшибка появляется в строке, помеченной как «строка ошибки» в приведенном выше коде

. Как заставить вышеуказанный код работать, когда Excel открывается программой

РЕДАКТИРОВАТЬ: ниже приведен сценарий длябольше ясности

  • Нажатие кнопки в AUT, которая открывает лист Excel
  • Когда открывается Excel, лист отображается на экране
  • Мне нужен доступ к этому листупрограммно и проверить некоторую информацию

1 Ответ

0 голосов
/ 02 июля 2019

У меня были проблемы, потому что процессы Excel работали с предыдущих сессий. Когда приведенный выше код пытался подключиться к листу Excel, открытому другой программой, он выдал исключение null. Решение состоит в том, чтобы завершить все процессы Excel перед запуском вышеуказанного кода. Почему-то это не жаловалось, когда я запускал код на сохраненном вручную Excel. Я не уверен, почему это поведение, но пока оно разрешено.

...