Следующий фрагмент кода получает список всех установленных на компьютере копий Excel (это было опробовано и протестировано на компьютере с Windows XP, работающим в Excel 2003 и 2007).
Dim reg As RegistryKey
Dim subKey As RegistryKey
Dim rtn As New Dictionary(Of String, String)
reg = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Office")
If reg IsNot Nothing Then
For Each subKeyName As String In reg.GetSubKeyNames
subKey = reg.OpenSubKey(subKeyName)
If subKey IsNot Nothing Then
If subKey.GetSubKeyNames().Contains("Excel") Then
subKey = subKey.OpenSubKey("Excel\InstallRoot")
rtn.Add(subKeyName, subKey.GetValue("Path").ToString)
End If
End If
Next
End If
For Each kvp In rtn
MessageBox.Show(String.Format("Version: {0} at '{1}Excel.exe'", kvp.Key, kvp.Value))
Next
В переменной rtn
имеется словарь версий (ключ) и каталог, в который установлен Excel (значение).Как видно из бита MessageBox
в конце моего кода, вам необходимо добавить в его конец «Excel.exe».
Теперь у вас есть расположение установленных копийВ Excel и их версиях вы можете создать форму со списком, чтобы пользователь мог выбрать, какую версию он хочет использовать.
Хотя я уверен, что вы можете найти командную строку для открытия электронной таблицы Excelв Excel я решил включить его сюда для полноты;
excel.exe "c:\My Folder\book1.xlsx"
(http://office.microsoft.com/en-us/excel-help/command-line-switches-for-excel-HA010158030.aspx)
Несколько более полное объяснение , как определить установленные версии Excel и их расположение.