CallByName() doesn't

C

christopher.allen

CallByName() doesn't seem to be calling for me. I have no compile
errors, the method I'm trying to call is really there in the
CodeModule, but it doesn't execute when called by name.

This code snippet loops through all the components in the workbook.
For any StdModules, it looks for the Proc "savethisModule", and calls
it by name. The MsgBoxes show me that Module2 has a "savethisModule"
method and it's about to be called ... but it doesn't get called.

Note that the hardcoded call at the beginning of this snippet
(commented-out) does work.

So I suspect I'm missing something here ... any ideas?

-Christopher

Public Sub saveAllModules()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim procline As Long

' Call Module2.savethisModule

Set VBProj = ActiveWorkbook.VBProject
For Each VBComp In VBProj.VBComponents
MsgBox "VBComp.Type=" & VBComp.Type & ", Name=" & VBComp.Name
If (VBComp.Type = vbext_ct_StdModule) Then
Set CodeMod = VBComp.CodeModule
procline = 0
On Error Resume Next
procline = CodeMod.ProcBodyLine("savethisModule",
vbext_pk_Proc)
If procline > 0 Then
MsgBox "calling " & "savethisModule" & _
"() in module" & VBComp.Name
Call CallByName(CodeMod, "savethisModule", VbMethod)
End If
End If
Next VBComp
End Sub
 
J

Jim Rech

I don't think a sub routine in a code module can be considered a method of
an object. I would think if you used a class module and instantiated it
this approach would work. If you want to run a sub 'by name' how about" Run
"SubName"?

--
Jim
"christopher.allen" <"at workscape.com"> wrote in message
| CallByName() doesn't seem to be calling for me. I have no compile
| errors, the method I'm trying to call is really there in the
| CodeModule, but it doesn't execute when called by name.
|
| This code snippet loops through all the components in the workbook.
| For any StdModules, it looks for the Proc "savethisModule", and calls
| it by name. The MsgBoxes show me that Module2 has a "savethisModule"
| method and it's about to be called ... but it doesn't get called.
|
| Note that the hardcoded call at the beginning of this snippet
| (commented-out) does work.
|
| So I suspect I'm missing something here ... any ideas?
|
| -Christopher
|
| Public Sub saveAllModules()
| Dim VBProj As VBIDE.VBProject
| Dim VBComp As VBIDE.VBComponent
| Dim CodeMod As VBIDE.CodeModule
| Dim procline As Long
|
| ' Call Module2.savethisModule
|
| Set VBProj = ActiveWorkbook.VBProject
| For Each VBComp In VBProj.VBComponents
| MsgBox "VBComp.Type=" & VBComp.Type & ", Name=" & VBComp.Name
| If (VBComp.Type = vbext_ct_StdModule) Then
| Set CodeMod = VBComp.CodeModule
| procline = 0
| On Error Resume Next
| procline = CodeMod.ProcBodyLine("savethisModule",
| vbext_pk_Proc)
| If procline > 0 Then
| MsgBox "calling " & "savethisModule" & _
| "() in module" & VBComp.Name
| Call CallByName(CodeMod, "savethisModule", VbMethod)
| End If
| End If
| Next VBComp
| End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top