VBA에서 간단한 C# DLL을 호출 할 때 심각한 문제가 발생해도 작동하지 않습니다. 다른 사람들을 위해 일하는 것처럼 보인 몇 가지를 시도했지만 운은 없었습니다.VBA에서 사용자 지정 C# DLL, 오류 429
기계 1 :
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace DLLTester3
{
[Guid("6A40F90B-B8FC-4F4A-9B4C-850279D45B3B")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ProgId("DLLTester3.DoSometing")]
public class DLLTester3
{
public void DoSometing()
{
MessageBox.Show("Hello world");
}
}
}
가 되세요 "폼 COM interop에 등록"과 세트 "조립 COM-볼합니다": 윈도우 7, 비주얼에서 sudio 2013 익스프레스, 여기
Office 2010을 내 C# 코드입니다 사실로, 어셈블리에 서명했다.
Option Explicit
Sub DoIt()
Dim Something As DLLTester3.DLLTester3
Set Something = New DLLTester3.DLLTester3
Call Something.DoSometing
End Sub
기계 : 2 : 윈도우 10, 오피스 2013
는 기계 3 : 윈도우 서버 2008, DLL을 복사 오피스 2010
, RegAsm을을 사용하여 등록 엑셀에서 다음 VBA 실행
예상대로 작동 /codebase
옵션을 사용하면 두 시스템 모두 오류 429가 발생합니다.
제안 사항을 환영합니다! 당신이 한 일을 바탕으로
Regasm.exe 문제 일 수 있습니다. 선택할 수있는 4 가지 버전이 있다면, 잘못된 선택을 할 확률은 약 75 %입니다. 음, 100 %. 당신이 사용한 것을 명시하십시오. –
대상 프레임 워크 4.0 C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ RegAsm.exe (Windows 10) –
100 % 확률을 감안할 때 Framework 디렉토리에있는 것을 사용하십시오. Framwork64의 기능은 64 비트 프로세스에서만 작동하며 Office는 여전히 일반적으로 32 비트 설치입니다. –