Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27
Default Coring on calling VBA6 dll

I have this bit of code that cores excel. Is there something I am
doing wrong?

Option Explicit


Declare Function EbExecuteLine Lib "C:\Program Files\Common Files
\Microsoft Shared\VBA\VBA6\VBACV20.dll" ( _
ByVal stStringToExec As Long, _
ByVal Unknownn1 As Long, _
ByVal Unknownn2 As Long, _
ByVal fCheckOnly As Long) As Long


Public Function ExecuteLine(stCode As String, Optional bCheckOnly As
Boolean = False) As Boolean
Dim stCommand As String * 256
Dim lgPtr As Long

stCommand = stCode
lgPtr = StrPtr(stCommand)
ExecuteLine = EbExecuteLine(lgPtr, 0&, 0&, Abs(bCheckOnly)) = 0
End Function


Private Sub test1()
ExecuteLine ("15 + 30")
End Sub

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default Coring on calling VBA6 dll

If you have a vb6 ActiveX you'd need to register it on the target machine,
eg with Regsrv32. The dll would also need at least one public class and
method.

Your Declare Function is for a C(++/#) dll but not a VB6. Instead you'll
need to start by creating an instance of the class and (typically) attaching
a reference to it. You can do that with CreateObject or, with late binding,
use of 'New'.

Dim mObjCls as Object

on error resume next
Set mObjCls = CreateObject("VBACV20.clsEntry")
if not mObjCls is nothing then
ExecuteLine = mObjCls.EbExecuteLine(lgPtr, 0&, 0&, Abs(bCheckOnly)) = 0

Assuming the dll is registered, set a reference to it in your vba project.
Press F2 and in Object Browser Libraries look for your dll. Hopefully you
will find "EbExecuteLine". Look for its container class name and substitute
with clsEntry in the example.

As, having set the reference, you can use Early binding and do something
like this -

Dim mObjCls as VBACV20.clsEntry ' manually type and look at intellisense
Set mObjCls = New clsEntry
etc

Curiosity - what's the StrPtr(stCommand), if say a to get the address of
something? in a normal module in the dll I'd be interested as to how that
could be used

Regards,
Peter T


"Tom Med" wrote in message
ups.com...
I have this bit of code that cores excel. Is there something I am
doing wrong?

Option Explicit


Declare Function EbExecuteLine Lib "C:\Program Files\Common Files
\Microsoft Shared\VBA\VBA6\VBACV20.dll" ( _
ByVal stStringToExec As Long, _
ByVal Unknownn1 As Long, _
ByVal Unknownn2 As Long, _
ByVal fCheckOnly As Long) As Long


Public Function ExecuteLine(stCode As String, Optional bCheckOnly As
Boolean = False) As Boolean
Dim stCommand As String * 256
Dim lgPtr As Long

stCommand = stCode
lgPtr = StrPtr(stCommand)
ExecuteLine = EbExecuteLine(lgPtr, 0&, 0&, Abs(bCheckOnly)) = 0
End Function


Private Sub test1()
ExecuteLine ("15 + 30")
End Sub



Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
VBA6 cores when hitting Reset button on the VBA IDE Tom Med Excel Programming 11 September 27th 07 02:06 PM
File Not Found: VBA6.DLL WLMPilot Excel Discussion (Misc queries) 0 September 4th 05 06:43 PM
FILE NOT FOUND: VBA6.DLL WLMPilot Excel Discussion (Misc queries) 0 April 28th 05 07:30 PM
File Not Found: VBA6.DLL WLMPilot Excel Discussion (Misc queries) 1 April 20th 05 04:31 PM
Checking for VBA5, not VBA6 Matt Somers Excel Programming 3 February 15th 04 07:13 PM


All times are GMT +1. The time now is 02:57 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"