2014-10-13 2 views
2

Я пишу макрос CorelDraw, который извлекает некоторые данные из Excel, открывая Workbook.Dim Workbook in CorelDraw VBA Macro не компилируется

Мне нравится объявлять свои переменные перед их использованием (а также обычно это требует Option Explicit).

В этой подлодки, я заявляю о своей Workbook переменную как:

Sub needsWorkbookType() 
    Dim notCompile As workbook 
End Sub 

Тем не менее, потому что я бегу это от CorelDraw, у меня нет доступа к типам Excel. Когда я пытаюсь запустить подлодку, я получаю ошибку компиляции:

  • определяемые пользователем тип не определен

Я знаю, что могу обойти эту проблему, отключив явное объявление, и просто не объявляя ни одну из переменных Excel. Интерпретатор будет динамически создавать их, и он будет работать.

Но я бы предпочел, чтобы иметь возможность объявить их.


Моя система:

  • для Windows 8.1
  • Excel 2013
  • Corel X6
+2

Для раннего связывания вам нужно добавить ссылки на 'Microsoft Excel 14.0 Object Library'. Затем вы можете сказать 'Dim xlApp как новое Application.Excel'. Вы также можете попробовать более позднюю привязку, такую ​​как «Dim xlApp as Object», а затем в новой строке «Установить xlApp = CreateObject (« Excel.Application »)' –

+2

Добавить комментарий @ vba4all. Чтобы выполнить раннее связывание в Corel, в VBE, перейдите в Инструменты >> Ссылки и найдите «Библиотека объектов Microsoft Excel 14.0». Если у вас установлена ​​более старая версия Microsoft Office, то это может быть «Microsoft Excel 12.0 Object Library» или что-то еще как это. – JNevill

ответ

3

Вам нужно добавить ссылки на Microsoft Excel 14.0 Object Library для раннего связывания. Перейдите на страницу Tools >>References и найдите библиотеку в списке и поставьте галочку в поле. Если у вас есть старая версия Excel число 14 может быть ниже, но это не огромная сделка, как объектная модель Excel не изменилась что много на протяжении многих лет ...

Со ссылками добавил вы можете сказать:

Dim xlApp as new Application.Excel

вы также можете попробовать позднее связывание, если у вас возникли проблемы при добавлении ссылки:

Dim xlApp as Object 
Set xlApp = CreateObject("Excel.Application") 

но попытаться идти с ранним связыванием, поскольку это дает вам Intelli-смысл, и вы можете обрабатывать любые ошибки намного лучше.


Если у вас есть Excel 2013 установлен, то необходимо добавить ссылку на Microsoft Excel 15.0 Object Library.

Если он не отображается в списке, вы можете перейти к нему и установить его таким образом.

Чтобы узнать, к какому файлу нужно перейти, вы можете открыть редактор Excel VBA и посмотреть тот же список в этом редакторе - поскольку вы уже находитесь в Excel, библиотека уже будет добавлена ​​и будет отображаться вы имя пути, как показано ниже:

enter image description here

переключатель обратно в редактор Corel VBA, а также просматривать в этой библиотеке.

Теперь будет активировано раннее связывание.

+1

должен был сделать какую-то гимнастику, чтобы получить ссылку там, - уточнил ваш ответ с подробностями. –

+0

Спасибо @RichardLeMesurier –