A
Alan Roberts
First I appologise for cross posting. I put this in the C# group and then
discovered this group which is probably more appropriate. Anyway, can
someone please explain the following for me...
I am trying to link to a .NET DLL from Excel. Excel needs to pass a
reference to itself to the DLL and then the DLL needs to perform some work
on the running instance of Excel via that reference. As an example, a VB
DLL to return the path to the current active workbook contains the following
(in addition to the COM GUIDS automatically added to a new COMClass)...
Public Class Class1
Public Sub New()
MyBase.New()
End Sub
Private gExcel As Object
Public Property Excel() As Object
Set(ByVal value As Object)
gExcel = value
End Set
Get
Excel = gExcel
End Get
End Property
Public Function Path() As String
Return Excel.ThisWorkbook.Path
End Function
End Class
After adding a refernece to the DLL, a macro in Excel could call this as
follows
Sub VBTest()
Dim VBTest As New VBExcelTest.Class1
Set VBTest.Excel = Application
Debug.Print VBTest.Path
End Sub
This all work fine
How can I do the same thing using C#? If I try to create a DLL with
equivalent(?) code eg
public class Class1
{
public Class1(){
}
private object gExcel;
public object Excel{
get{
return gExcel;
}
set{
gExcel = value;
}
}
public string Path(){
return Excel.ThisWorkbook.Path;
}
}
I get a compile error saying that - 'object' does not contain a definition
for 'ThisWorkbook'
How can I get this to work?
Thanks
Alan
discovered this group which is probably more appropriate. Anyway, can
someone please explain the following for me...
I am trying to link to a .NET DLL from Excel. Excel needs to pass a
reference to itself to the DLL and then the DLL needs to perform some work
on the running instance of Excel via that reference. As an example, a VB
DLL to return the path to the current active workbook contains the following
(in addition to the COM GUIDS automatically added to a new COMClass)...
Public Class Class1
Public Sub New()
MyBase.New()
End Sub
Private gExcel As Object
Public Property Excel() As Object
Set(ByVal value As Object)
gExcel = value
End Set
Get
Excel = gExcel
End Get
End Property
Public Function Path() As String
Return Excel.ThisWorkbook.Path
End Function
End Class
After adding a refernece to the DLL, a macro in Excel could call this as
follows
Sub VBTest()
Dim VBTest As New VBExcelTest.Class1
Set VBTest.Excel = Application
Debug.Print VBTest.Path
End Sub
This all work fine
How can I do the same thing using C#? If I try to create a DLL with
equivalent(?) code eg
public class Class1
{
public Class1(){
}
private object gExcel;
public object Excel{
get{
return gExcel;
}
set{
gExcel = value;
}
}
public string Path(){
return Excel.ThisWorkbook.Path;
}
}
I get a compile error saying that - 'object' does not contain a definition
for 'ThisWorkbook'
How can I get this to work?
Thanks
Alan