﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / .NET / VB.NET  / Загрузка кода, в зависимости от версии Excel / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Sat, 22 Nov 2008 21:45:21 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Загрузка кода, в зависимости от версии Excel</title><link>http://www.relib.com/forums/Topic904884-27-1.aspx</link><description>На предмет строгих типов, disposability и позднего связыания для COM смотреть тут: &lt;A href="http://www.codeproject.com/csharp/safecomwrapper.asp"&gt;http://www.codeproject.com/csharp/safecomwrapper.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;От себя добавлю, что сам уже пользовался этим способом для ворда и кой-каких других COM-библиотек, все работало великолепно. А возможность заворачивать псевдо-COM-классы в Using - это вообще сказка.&lt;/P&gt;&lt;P&gt;Единственный минус - что нужно объявлять интерфейсы, но(!) можно, во-первых, объявлять только те члены, которыми пользуешься в коде, и во-вторых, есть автоматические утилиты для расчленения COM.</description><pubDate>Sun, 08 Oct 2006 14:59:08 GMT</pubDate><dc:creator>Messir</dc:creator></item><item><title>RE: Загрузка кода, в зависимости от версии Excel</title><link>http://www.relib.com/forums/Topic904884-27-1.aspx</link><description>Dim excel_app as object&lt;br&gt;'Далее никаких CType'ов&lt;br&gt;excel_app = CreateObject("Excel.Application")&lt;br&gt;&lt;br&gt;Да, через точку не будут выпадать св-ва и методы, но писать вручную вы их сможете, и оно будет работать.... наверное...</description><pubDate>Thu, 05 Oct 2006 13:54:02 GMT</pubDate><dc:creator>Hover</dc:creator></item><item><title>RE: Загрузка кода, в зависимости от версии Excel</title><link>http://www.relib.com/forums/Topic904884-27-1.aspx</link><description>А оно по-любому, приходится через CreateObject. Проблема не в этом, для того, чтобы получить доступ к функциям объекта надо знать его тип, поэтому и необходимо добавлять библиотеки типов.&lt;/P&gt;&lt;P&gt;Т.е. если я делаю так&lt;/P&gt;&lt;P&gt;excel_app = CreateObject("Excel.Application")&lt;/P&gt;&lt;P&gt;то мне надо определить excel_app так&lt;/P&gt;&lt;P&gt;Dim excel_app as Microsoft.Office.InterOp.Excel.Application&lt;BR&gt;excel_app = CType(CreateObject("Excel.Application"), _&lt;BR&gt;                           Microsoft.Office.InterOp.Excel.Application)&lt;/P&gt;&lt;P&gt;Хотя... Я еще не пробовал использование CreateObject в стиле VB6. Надо попробовать.</description><pubDate>Sun, 01 Oct 2006 15:55:56 GMT</pubDate><dc:creator>kpoxa</dc:creator></item><item><title>RE: Загрузка кода, в зависимости от версии Excel</title><link>http://www.relib.com/forums/Topic904884-27-1.aspx</link><description>А Вы попробуйте не через референсы, а через CreateObject (пардон, за старый VB-синтаксис). И создавайте экземпляр "Excel.Application". Эта запись ссылается на ту версию Excel, которая есть на машине. Правда в этом случае вы будете иметь дело с поздним связыванеим... Но вам вроде быстродействие не особо требуется.&lt;br&gt;На счет совместимости. Вроде бы документы ворда и эксела с 97 версии до 2003 совместимы в обе стороны. (хотя может какие-то особенности и не передаются, но у Вас же просто данные).</description><pubDate>Sat, 30 Sep 2006 22:37:14 GMT</pubDate><dc:creator>Hover</dc:creator></item><item><title>RE: Загрузка кода, в зависимости от версии Excel</title><link>http://www.relib.com/forums/Topic904884-27-1.aspx</link><description>По поводу второго пункта, я нашел решение. Необходимо с сайта MSDN скачать два дополнительных пакета и установить их, это  Office 2003 Primary Interop Assemblies и Visual Studion Office Tools Redistributable. Добавить к проекту библиотеку Microsoft.Office.Interop.Exel.dll. Библиотеку Microsoft Excel 11.0 Object Library можно спокойно удалять из проекта, она больше не нужна.&lt;/P&gt;&lt;P&gt;Остается открытым вопрос, что делать если у пользователя не установлен Office 2003? Можно ли только с помощью этих двух пакетов открывать более ранние/более поздние версии XLS файлов? Если нет, то каким образом перегружать assemblies в зависимости от установленной версии?&lt;/P&gt;&lt;P&gt;Собственно от Excel мне надо только открыть Workbook, получить доступ к Workseet, из него получить доступ к UsedRange и далее пройтись по полям и извлечь информацию. (по крайней мере на данный момент это все).</description><pubDate>Wed, 27 Sep 2006 16:21:53 GMT</pubDate><dc:creator>kpoxa</dc:creator></item><item><title>Загрузка кода, в зависимости от версии Excel</title><link>http://www.relib.com/forums/Topic904884-27-1.aspx</link><description>Мне необходимо получить некоторые данные из таблицы Excel.&lt;P&gt;Я добавил к проекту с помощью Add References библиотеку Microsoft Excel 11.0 Object Library (у меня установлен OF.2003). В связи с этим ворос:&lt;/P&gt;&lt;P&gt;1. Есть ли возможность, и как, получив информацию о версии Excel установленной на пользовательском компе, использовать соответсвующую библиотеку? Могу ли я с помощью используемой мной библиотеки открывать другие версии Excel файлов (97, 2000, ХР, 2007), если мне необходима базовая функциональность? &lt;/P&gt;&lt;P&gt;2. После добавления Excel к проекту, у меня появилось новое пространство имен, которое теперь конфликтует с System.Windows.Forms . В примерах от MSDN доступ к классам Excel происходит через namespace Microsoft.Office.InterOp.Excel, у меня же нет такого пространсва, зато появился namespace Excel. Думаю отсюда и проблемы с сонтролями из System.* Может я не ту библиотеку подключил? Или может это потому, что я пользуюсь VB.NET Express вместо Visual Studio 2005?</description><pubDate>Tue, 26 Sep 2006 16:23:21 GMT</pubDate><dc:creator>kpoxa</dc:creator></item></channel></rss>