是否可以使用当前版本的Visual Studio创建可以在VBA项目中调用的ActiveX DLL?

问题描述 投票:1回答:2

使用旧的Microsoft Office 2000或Visual Studio 6(Visual Basic 6)开发人员工具,可以创建可以在VBA项目中引用和调用的ActiveX DLL。有没有办法使用最新的Visual Basic / VBA编码工具?

vba activex
2个回答
0
投票

我自己不是专家,但这是一个让你入门的小例子。一个简单的DLL,用于计算在Visual Studio 2017中编写的两个数字的总和。

脚步:

1)创建一个类库项目。 2)在Assembly Information下,选择“Make assembly COM-Visible”。 3)在Build下,选择“Register for COM interop”。

ICalculator界面:

[Guid("097E4850-4880-45B8-A20E-AFECC5D11D44")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[ComVisible(true)]
public interface ICalculator
{
    void Calculate(double number1, double number2);
}

ICalculatorEvents界面:

[Guid("A3C988C8-9DA8-4981-AC11-6653FDDA6B30")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[ComVisible(true)]
public interface ICalculatorEvents
{
    void CalculationSuccessfull(double result);
}

Calculatorclass:

using System;
using System.Runtime.InteropServices;

namespace ComCalculator
{       
    public delegate void SuccessDelegate(double result);

    [Guid("79B9BB64-AA3A-4FBB-BAAA-0FAC448CC695")]
    [ClassInterface(ClassInterfaceType.None)]
    [ComSourceInterfaces(typeof(ICalculatorEvents))]
    [ComVisible(true)]
    public sealed class Calculator : ICalculator
    {
        public event SuccessDelegate CalculationSuccessfull = null;

        public Calculator()
        {
        }

        public void Calculate(double number1, double number2)
        {
            double _calc = 0;
            _calc = number1 + number2;
            OnSuccess(_calc);
        }

        private void OnSuccess(double result)
        {
            CalculationSuccessfull?.Invoke(result);
        }
    }
}

在VBA中:

Option Explicit

Private WithEvents objCalc As ComCalculator.Calculator

Private Sub Calculate()

    Set objCalc = New Calculator
    objCalc.Calculate 7, 5
End Sub

Private Sub objCalc_CalculationSuccessfull(ByVal result As Double)
    Debug.Print result
End Sub

'Output: 12

注意:

您需要以管理员身份运行Visual Studio。


-1
投票

是的,看起来如此。

我用Google搜索“Create ActiveX DLL”,第一个是关于如何使用Visual Studio 6创建ActiveX DLL(称为ThingDemo.DLL)的Microsoft教程。

example

还有很多其他好的链接。

© www.soinside.com 2019 - 2024. All rights reserved.