2010-04-01 8 views
1

실행중인 C# 응용 프로그램과 통신해야하는 VBA 코드가 있습니다. C# 응용 프로그램은 서비스로서 실행되며 .net 원격을 통해 인터페이스를 제공합니다. 무엇이 가장 좋은 방법 - VBA에서 실행중인 C# 응용 프로그램 호출

나는

그래서 나는 단계를 다시 데려 갈거야 ... 특정 문제가 이미 ( From VB6 to .net via COM and Remoting...What a mess!)을 보내고있어하지만 난 모든 잘못 내 구조를 가질 수있다 생각에 관한 질문을 게시 이 일을하려고하는거야? 나는 비슷한 달성 한 가지 방법은 Microsoft Message Queueing과 함께 계셨으니 ... 그냥 미리 컴파일 된 DLL을 호출하지 과거

답변

0

나는

입니다

는 VBA 응용 프로그램은 COM 안전 유형 닷넷에서 모든 유형을 변환하는 COM 래퍼 응용 프로그램을 호출 ... 내 원래의 구조를 사용하여 해결책을 마련했습니다. 그런 다음이 랩퍼는 .net remoting을 사용하여 기본 서비스를 호출합니다.

문제는 래퍼와 서비스 사이의 일반적인 dll이 C : \ Program Files \ Microsoft Office \ Office12 폴더 (msaccess.exe와 함께)에 있어야한다는 것입니다.

런타임에 DLL을 제공하기 위해 AssemblyResolve 메서드를 사용하는 동안이 작업이 작동하지 않았습니다 ... 그래서 지금은 DLL을 폴더에 복사해야합니다 .- 우아한 솔루션에서 멀리 떨어져 있지만 적어도 현재 의사 소통이 진행 중입니다.

0

- 고려 가치가 한 가지 내가 실행중인 응용 프로그램에 호출 할 것입니다. 두 언어/플랫폼 모두 대기열을 읽고 쓸 수 있습니다.

필자의 시나리오에서는 기존 Access 데이터베이스를 유지 관리해야했습니다. 우리는이 솔루션에서 마이그레이션하여보다 강력한 .NET 솔루션으로 대체하고자했습니다. 현재 시스템의 실시간 데이터를 새로운 시스템으로 가져 오기 위해 VBA 코드를 추가하여 메시지 대기열에 데이터를 기록했습니다. 그런 다음 새 시스템에서 해당 데이터를 처리하기 위해 C# Windows 서비스를 작성했습니다.

나는 당신이하는 일에 대해 완전히 확신하지 못하기 때문에 이것이 적합하지 않을 수도 있지만, 나는 그것을 언급 할 것이라고 생각했습니다.

+0

안녕하세요. 귀하의 제안에 감사드립니다. 다른 방법이 없으면 VBA 코드를 작성/유지할 필요가 없습니다. 이 솔루션을 위해서는 여러 가지 메시지 유형을 정의하고 메시지를 압축/풀어주는 양 끝 (C# 및 Vba)에 코드를 작성해야합니다. – Robert

관련 문제