Microsoft.Office.Interop.Excel.Application - вызов различных версий Excel - PullRequest
1 голос
/ 11 апреля 2019

У меня есть следующая проблема:

var oExcelApp = new Microsoft.Office.Interop.Excel.Application();

На этом компьютере запускается Excel 2016, однако на моем компьютере установлены Excel 2010 и Excel 2016. Вместо этого я бы хотел начать 2010 год, и я бы хотел, чтобы на моем компьютере были установлены как 2010, так и 2016 год.

Согласно этому посту , это невозможно. Однако, насколько я понимаю, вы можете сделать это программно , используя следующие команды :

(Чтобы зарегистрировать Excel 2010 в качестве приложения по умолчанию)

"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" /regserver

Однако, когда я запускаю эту команду, все, что она делает, это open Excel, желаемый эффект не наблюдается. Есть ли способ сделать это, может быть, с каким-то изменением реестра ? Или ссылка на другую версию библиотек ?

Обновление 1

Я пробовал это тоже :

var oExcelApp = (Microsoft.Office.Interop.Excel.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application.14"));

Кажется, тоже не работает, игнорирует версию Excel и запускает 2016 год независимо от указанной версии .

1 Ответ

1 голос
/ 11 апреля 2019

Это , кажется, работает довольно хорошо.Не уверен, в чем разница между «_Application» и «Application», но для комментария «Application» предпочтительнее:

string pathToTheVersionOfExcel "...";
int amountOfTimeToWaitForFailure = 5000;

Process process = new Process();
process.StartInfo.FileName = pathToTheVersionOfExcel;
process.Start();

Thread.Sleep(amountOfTimeToWaitForFailure);

oExcelApp = (Application)Marshal.GetActiveObject("Excel.Application");
...