2013-03-28 2 views
0

Я пытаюсь программно импортировать пространство имен Microsoft.Office.Interop.Excel в мой проект vba. Я нашел this site , который показывает, как импортировать его вручную, но я даю этот проект, над которым я работал, людям, которые не знают, как его импортировать. Кто-нибудь может помочь?Программно импортировать пространство имен Microsoft.Office.Interop.Excel в проекте VBA

+0

Не могли бы вы пояснить: если у вас есть проект VBA (в Excel?), Зачем вам нужно импортировать какое-либо пространство имен? Вы имеете в виду ссылку «Reference» (= VBA) в библиотеку Excel? Пространство имен - это термин .NET, обычно не используемый в контексте VBA ... –

+0

Возможный дубликат [Предотвращение компиляции Excel VBA из-за того, что у пользователей установлена ​​более старая версия MS Office (MS Outlook)] (http: // stackoverflow. com/questions/9491314/prevent-excel-vba-compile-errors-due-to-users-have-old-version-of-ms-o) –

ответ

0

Я предполагаю из вашего вопроса, что ваш код VBA использует ссылку на библиотеку Microsoft Excel 12.0 (или другую версию), и что ваш пользователь получает сообщение об ошибке, поскольку ссылка не может быть найдена. В этом случае у вас есть два варианта:

  • Вместо ссылки на библиотеку v12 обратитесь к старой библиотеке, например. из Excel 2003. Для этого выполните поиск в сети для этой библиотеки и установите ее - или просто «повторно подключите» ваш файл в установке Office 2003 перед отправкой.
  • Используйте последнее связывание вместо раннего связывания. В этом случае вы не добавляете ссылку на библиотеку Excel вообще. Вместо этого вы объявляете свои объекты как тип Object (вместо Excel.Workbook, Excel.Application и т. Д.). Чтобы создать новый объект, вместо использования Set objExcelApp = New Excel.Application, вы должны теперь использовать CreateObject (для новых объектов) или GetObject (для существующих объектов, например существующего, запущенного приложения): Set objExcelApp = CreateObject("Excel.Application"). Любой более поздний код будет продолжать работать как обычно (хотя он может быть немного медленнее из-за позднего связывания).

Для дальнейшего уточнения отметьте это answer.

+0

Извините за поздний ответ, я путешествовал. Но большое спасибо Петру! Я собираюсь начать последнее связывание всего сейчас :) –

+0

Добро пожаловать! Только недостаток позднего связывания: вы не получаете IntelliSense, показывая свои свойства в редакторе. Поэтому я обычно разрабатываю с ранним связыванием с поздним связыванием перед отправкой ... –

Смежные вопросы