Использовать библиотеки .NET Framework в 64-битной сборке, на которую ссылается VBA7 в Excel - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть библиотека, написанная на C #, которая использует стандартные библиотеки .NET Framework (System, System.Windows.Forms). Эта библиотека COMVisible, как и ее классы, у меня просто есть два класса: - TestClass (класс с одним методом) - TestForm (пустая форма)

Я зарегистрировал сборку, как предложено здесь: C # COM DLL: я использую Regasm или Regsvr32?

Затем я зашел в свою надстройку Excel и добавил ссылку на созданный файл .TLB.

Я могу создать экземпляр моего "TestClass" и без проблем вызвать его метод, но когда я пытаюсь создать экземпляр моего "TestForm", он показывает мне эту ошибку:

Run-time error '-2147024894 (80070002)':

Automation error
The system cannot find the file specified.

В соответствии с проблемами, с которыми я столкнулся при попытке заставить работать класс, проблема в том, что одна из зависимостей (я предполагаю, System.Windows.Forms) не найдена в Excel.

Как открыть форму, написанную на .NET, из моей 64-битной надстройки Office?

Заранее спасибо

1 Ответ

1 голос
/ 15 декабря 2011

Приведенный ниже пример может помочь вам понять, как работает код VBA7 в 64-битном Office.

Добавление в 64-битные надстройки Office может не быть проблемой, но когда вы попытаетесь использовать их в VBA7, вы определенно испытаетепроблема.

Тестирование, если мы используем 64-разрядную версию (VBA7) Office 2010:

#If Win64(VBA7) Then
   Declare PtrSafe Function GetTickCount64 Lib "kernel32" () As LongLong
#Else(VBA)
   Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
#End If

Если я ошибаюсь, обратитесь ко мне с решением @ kirantej@gmail.com Следовательно,я тоже работаю над той же задачей ...: - P

...