ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   How to pass active workbook to external DLL? (https://www.excelbanter.com/excel-programming/369995-how-pass-active-workbook-external-dll.html)

MarkDev

How to pass active workbook to external DLL?
 

I need to send a reference(?) to active workbook to external DLL. The
DLL is
written in VB6. In the external DLL I'll be updating this workbook.
Sample code is provided below:

Here is excel macro code:
Sub test3()
Dim TC As ClassA
Dim wbCodeBook As Workbook
Set TC = New ClassA
Set wbCodeBook = ThisWorkbook
TC.GetCellA1(wbCodeBook)
Set TC = Nothing
End Sub


Below is provided my VB6 code (this sub is part of CalssA):
Public Sub GetCellA1(locWB As Workbook)
Dim CellValue As String
CellValue = locWB.Worksheets(1).Range("A1")
MsgBox "Cell A1 = " + CellValue, "FROM DLL"
End Sub

It fails on the line TC.GetCellA1(wbCodeBook). The error message says:
"#438: Object doesn't support this property or method."

Please help


--
MarkDev
------------------------------------------------------------------------
MarkDev's Profile: http://www.excelforum.com/member.php...o&userid=35572
View this thread: http://www.excelforum.com/showthread...hreadid=570387


NickHK[_3_]

How to pass active workbook to external DLL?
 
Your VB6 DLL does not know what a Workbook is.
However it does know Excel.Workbook, assuming you have a reference to the
Excel library, using early binding.

NickHK

"MarkDev" ¼¶¼g©ó¶l¥ó·s»D:MarkDev.2cby33_1155222915.8281@exce lforum-nospam.com...

I need to send a reference(?) to active workbook to external DLL. The
DLL is
written in VB6. In the external DLL I'll be updating this workbook.
Sample code is provided below:

Here is excel macro code:
Sub test3()
Dim TC As ClassA
Dim wbCodeBook As Workbook
Set TC = New ClassA
Set wbCodeBook = ThisWorkbook
TC.GetCellA1(wbCodeBook)
Set TC = Nothing
End Sub


Below is provided my VB6 code (this sub is part of CalssA):
Public Sub GetCellA1(locWB As Workbook)
Dim CellValue As String
CellValue = locWB.Worksheets(1).Range("A1")
MsgBox "Cell A1 = " + CellValue, "FROM DLL"
End Sub

It fails on the line TC.GetCellA1(wbCodeBook). The error message says:
"#438: Object doesn't support this property or method."

Please help


--
MarkDev
------------------------------------------------------------------------
MarkDev's Profile:
http://www.excelforum.com/member.php...o&userid=35572
View this thread: http://www.excelforum.com/showthread...hreadid=570387




MarkDev[_2_]

How to pass active workbook to external DLL?
 

I've changed definition of the DLL function
from Public Sub GetCellA1(locWB As Workbook)
to Public Sub GetCellA1(locWB As Excel.Workbook)
but still receving the same error message

--
MarkDe
-----------------------------------------------------------------------
MarkDev's Profile: http://www.excelforum.com/member.php...fo&userid=3557
View this thread: http://www.excelforum.com/showthread.php?threadid=57038


NickHK

How to pass active workbook to external DLL?
 
Mark,
This works for me:
'------------------------
'DLL <ExcelTest Class <cTest
'Reference to Excel library
Public Function GetCellA1Value(argWB As Excel.Workbook) As Variant
GetCellA1Value = argWB.Worksheets(1).Range("A1").Value
End Function
'------------------------
'In Excel
'Reference to ExcelTest.dll
Dim DLLTest As ExcelTest.cTest

Private Sub CommandButton1_Click()
Set DLLTest = New ExcelTest.cTest
With DLLTest
MsgBox "The value in cell A1 of WS(1) is " &
..GetCellA1Value(ThisWorkbook)
End With
End Sub
'------------------------

NickHK


"MarkDev" wrote in
message ...

I've changed definition of the DLL function
from Public Sub GetCellA1(locWB As Workbook)
to Public Sub GetCellA1(locWB As Excel.Workbook)
but still receving the same error message.


--
MarkDev
------------------------------------------------------------------------
MarkDev's Profile:

http://www.excelforum.com/member.php...o&userid=35572
View this thread: http://www.excelforum.com/showthread...hreadid=570387




MarkDev[_3_]

How to pass active workbook to external DLL?
 

I had to remove brackets to make it working on my computer (?):
GetCellA1Value ThisWorkbook

Thank you Nick


--
MarkDev
------------------------------------------------------------------------
MarkDev's Profile: http://www.excelforum.com/member.php...o&userid=35572
View this thread: http://www.excelforum.com/showthread...hreadid=570387



All times are GMT +1. The time now is 04:27 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com