Замена ссылки Excel 2003 на Excel 2010 в моем проекте VB6
У меня приложение VB6 работает годами. Это приложение всегда ссылается на Excel 2003 в прошлом для создания файлов XLS. Теперь мы хотели бы использовать Excel 2010 вместо 2003 года. Поэтому я установил только Excel 2010 на отдельный компьютер разработчика и загрузил свой проект vb6.
При запуске приложения я получил ошибку, в которой отсутствует моя "Библиотека объектов Microsoft Excel 10.0". Это так, потому что на этом компьютере установлен только Excel 2010, но не Excel 2003.
Проблема в том, что когда я хотел бы получить правильную ссылку, я не нашел никакой "Библиотеки объектов Microsoft Excel 14.0" или чего-то подобного для замены этой ссылки.
Любое предложение?
Благодарю.
1 ответ
Ранние привязанные ссылки являются "связанными" (извините за каламбур), чтобы вызвать проблему в приложениях, распространяемых пользователям с разными версиями Excel.
Использование позднего связывания и кодирования для самой ранней версии Excel, которую вы готовы поддержать, является решением. Например, если вы поддерживали Excel 2000, ваше приложение будет использовать только методы, поддерживаемые в Excel 2000.
Однако, если ваш код был запоздалым, вы можете использовать неоднозначные вызовы методов и определять локальную версию, чтобы определить, какой код запускать.
Пример:
Dim excelVersion As Long
Dim xl As Object
' get a reference to Excel.Application maybe from AddinInstance_OnConnection()?
excelVersion = Val(xl.Version)
Select Case excelVersion
Case 11 ' Excel 2003
' Excel 2003-only methods here
' ex: xl.FileSearch
Case 12 ' Excel 2007
' Excel 2007-only methods here
Case 14 ' Excel 2010
' Excel 2010-only methods here
' ex: something with Slicers
End Select
Поскольку код имеет позднюю привязку (т. Е. Является производным от объекта), я могу указать методы, которые допустимы только в Excel 2010, и код все равно будет компилироваться. Если код был ранее привязан к Excel 2003, он не скомпилируется. Во время выполнения я определяю версию, чтобы решить, какие методы использовать.
Вы также можете рассмотреть возможность компиляции разных версий вашего приложения, если вы используете функции, специфичные для Excel 2010. Только вы бы знали, возможно ли это.
Кроме того, и я подумал об этом после написания этого ответа, но вы не можете сослаться на Excel 2010 в своем приложении, и если оно установлено на компьютерах с более ранними версиями Excel, не будет ли ссылка автоматически адаптироваться к какой-либо версии Excel? установлены?