Hey,
vielleicht hat von euch noch irgendjemand eine passende Idee. Ich würde gerne aus einem VBScript eine in C# erstellte DLL aufrufen und es funktioniert nicht! Ich habe mir tutorials im Internet angeschaut und diese genau nachgebaut ... nichts zu machen. Ich bekomme immer folgende Fehlermeldung:
ActiveX-Komponenten kann kein Objekt erstellen: 'MyTestDLL.Ops'
Mit dem Fehlercode: 800A01AD und QUelle: LAufzeitfehler in Microsoft VBScript
Hier ist mein Testcode der DLL.. aufs kleinste "reduziert":
using System.Runtime.InteropServices;
namespace MyTestDLL
{
[ComVisible(true)]
public class Ops
{
[ComVisible(true)]
public string TestFunc()
{
return "Yeah!";
}
}
}
Und hier mein VBScript:
Dim obj
Set obj = CreateObject("MyTestDLL.Ops")
MsgBox obj.TestFunc
Besondere Einstellungen der DLL:
*Framework 4.5.2
*Für COM-Interop registeren
Ich habs schon folgende Dinge probiert:*Signierung der Assembly -> GAC *Registeren der DLL unter X86 und nicht AnyCPU
Interessanterweise: Wenn ich genau den selben VBScript-Code in eine VBA-Funktion (z. B. mit Excel) ausprobiere, funktioniert der Aufruf. Es scheint also irgendwie an der Kombination mit VBScript zu liegen.
Hat noch jemand eine Idee wo der Fehler sein kann? Bräuchte das ganz dringend... möchte ungerne einen riesigen Code in VBScript schreiben und würde gerne auf eine DLL ausweichen und nur noch die DLL aufrufen 😦
Vielen Dank!
Auch drauf geachtet, dass Du entsprechend x86 bzw x64 zum registrieren verwendet hast?
Das ist bei COM wichtig und dafür gibts zwei verschiedene Regasm.exe-Anwendungen.
Auch die Ausführung, ob im Context von x86 oder x64 ist relevant.
Nur dafür kompilieren reicht nicht.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code