У меня есть простая библиотека классов, которую я использую в Excel. Вот упрощение моего класса ...
using System;
using System.Runtime.InteropServices;
namespace SimpleLibrary
{
[ComVisible(true)]
public interface ISixGenerator
{
int Six();
}
public class SixGenerator : ISixGenerator
{
public int Six()
{
return 6;
}
}
}
В Excel 2007 я бы создал книгу с поддержкой макросов и добавил модуль со следующим кодом:
Public Function GetSix()
Dim lib As SimpleLibrary.SixGenerator
lib = New SimpleLibrary.SixGenerator
Six = lib.Six
End Function
Тогда в Excel я мог бы вызвать функцию GetSix (), и она вернула бы шесть. Это больше не работает в Excel 2010 64bit. Я получаю сообщение об ошибке «429»: компонент ActiveX не может создать объект.
Я попытался изменить целевую платформу на x64 вместо любого ЦП, но тогда мой код не скомпилировался бы, если я не снял флажок с параметра «Регистрация для COM-взаимодействия», из-за этого моя книга включения макросов не может видеть SimpleLibrary.dll в том виде, как она есть больше не регистрируется.
Есть идеи, как использовать библиотеку в 64-разрядной версии Excel 2010?