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
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