【问题标题】:Open a C# form (.dll) with VBA (Access 2010)使用 VBA (Access 2010) 打开 C# 表单 (.dll)
【发布时间】:2016-11-23 23:13:14
【问题描述】:

我在 C# 中有一个简单的“登录”屏幕,用户将在其中按下登录,然后弹出另一个窗口说欢迎,当我在 Visual Studio 上构建/运行时它正在工作。

这里是代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Login_Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Welcome");
            this.Close();
        }
    }
}

我还有一个 VBA 表单 (Access 2010),用户将在其中单击一个按钮,然后应该弹出 C# 表单,并且在将来,它不会说“欢迎”,而是重定向到 Access 中的不同表单。

这是 VBA 按钮的代码:

Private Sub Command284_Click()
    Dim objLog As Login_Test.Form1
    Set objLog = New Login_Test.Form1
End Sub

我已经制作了 .dll、.tlb,在上面使用了 regasm,并在 Access 上引用了它。

按下按钮时,我得到:“运行时错误 429 activex 组件无法创建对象”。

我错过了什么吗?

【问题讨论】:

  • ComVisible吗?
  • @cyboashu 我应该把那行放在哪里( [ComVisibleAttribute(true)] )?
  • 在 dll 的入口点(dll 的主/根类)之前看到这个:stackoverflow.com/questions/7092553/…
  • @cyboashu ,是的,我启用了“使程序集 COM-Visible”
  • 您注册时使用的 regasm 语法是什么?

标签: c# vba ms-access


【解决方案1】:

在管理员模式下启动开发者命令提示符,运行这个 synatx:

regasm.exe Login_Test.dll /tlb /CodeBase

您可以将 Login_test.dll 保存在任何地方,只需在命令中提供完整路径即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多