Использование объекта c # .net в форме Excel VBA - PullRequest
0 голосов
/ 08 июня 2010

У меня есть объект .net, который я хочу использовать в Excel. У меня есть существующий скрипт VBA, который мне нужно изменить, чтобы вызвать этот объект. Затем я преобразовал объект в TLB. Я не особо затрагивал эту область раньше, поэтому любая помощь будет оценена.

Я создал интерфейс

[Guid("0F700B48-E0CA-446b-B87E-555BCC317D74"),InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IOfficeCOMInterface
{

    [DispId(1)]
    void ResetOrder();
    [DispId(2)]
    void SetDeliveryAddress(string PostalName, string AddressLine1, string AddressLine2, string AddressLine3, string AddressLine4, string PostCode, string CountryCode, string TelephoneNo, string FaxNo, string EmailAddress);
}

Я также создал класс, который наследует этот объект.

[ClassInterface(ClassInterfaceType.None), ProgId("NAMESPACE.OfficeCOMInterface"), Guid("9D9723F9-8CF1-4834-BE69-C3FEAAAAB530"), ComVisible(true)]
public class OfficeCOMInterface : IOfficeCOMInterface, IDisposable
{
 public void ResetSOPOrder()
    {

    }
public void SetDeliveryAddress(string PostalName, string AddressLine1, string AddressLine2, string AddressLine3, string AddressLine4, string PostCode, string CountryCode, string TelephoneNo, string FaxNo, string EmailAddress)
    {

        try
        {
            SalesOrder.AmendDeliveryAddress(PostalName, AddressLine1, AddressLine2, AddressLine3, AddressLine4, PostCode);

            MessageBox.Show("Delivery address set");
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}

Я не могу получить доступ к методам объекта, кроме как утилизировать. Есть что-нибудь, что мне нужно сделать?

1 Ответ

1 голос
/ 08 июня 2010

Должны работать следующие шаги:

  1. Скомпилируйте вашу DLL.
  2. Используйте <a href="http://msdn.microsoft.com/en-us/library/tzat5yw6.aspx" rel="nofollow noreferrer">regasm</a> /tlb (или regasm /codebase /tlb, если вы не хотите помещать свою C # DLL в GAC), чтобы создать TLB и зарегистрировать его как COM-объект.
  3. Создание экземпляра вашего объекта в Excel VBA, так же, как вы создаете экземпляр любого другого COM-объекта. Для этого вы можете:

    • использовать раннее связывание: добавьте ссылку на ваш tlb в Excel, а затем используйте Set myObject = New NAMESPACE.OfficeCOMInterface или
    • использовать позднее связывание, которое не требует ссылки: Set myObject = CreateObject("NAMESPACE.OfficeCOMInterface")

    Первый вариант проще для разработки, второй вариант (часто) проще для развертывания.

  4. Используйте свой объект в VBA: myObject.ResetSOPOrder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...