View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Héctor Miguel Héctor Miguel is offline
external usenet poster
 
Posts: 434
Default Returning the name of a module

hi, Geoff !

I would get the (*.bas) "clean" filename from the full-path returned by GetOpenFileName
- (i.e.) Dir(modName(j))

and then, "clear" the ".bas" EXTension from the filename
- len(... & instr(...
- replace(...
- other/s ?

hth,
hector.

__ OP __
I have a collection of "utility" modules that I wish to be able to import into a number of workbooks
and then run. Below is the code I wished to use to do this:

Option Explicit

Sub Add_Modules()

Dim wbName
Dim wkBk As Workbook
Dim modName
Dim i As Integer
Dim j As Integer
Dim module As String

wbName = Application.GetOpenFilename(Title:="Select Files", MultiSelect:=True)
modName = Application.GetOpenFilename(Title:="Select Modules to Add", MultiSelect:=True)
For i = LBound(wbName) To UBound(wbName)
Set wkBk = Workbooks.Open(wbName(i))
For j = LBound(modName) To UBound(modName)
Call InsertVBComponent(wkBk, modName(j))
module = ? ' This is where I'm stuck...
Application.Run (wkBk.Name & "!" & module)
Next j
Next i

End Sub

InsertVBComponent is a sub which imports the module named.
The trouble I am having is in retrieving the name of the module in order to run the macro in it.
The modules all contain one macro, named the same as the module name.
For instance, Reset.bas is as follows:

Attribute VB_Name = "Reset"
Option Explicit

Sub Reset()

Dim linkArr
Dim i As Integer
Dim newLink As String
linkArr = ThisWorkbook.LinkSources
For i = 1 To UBound(linkArr)
newLink = Replace(linkArr(i), Application.StartupPath, "P:\CASE\MIPROJ")
ThisWorkbook.ChangeLink linkArr(i), newLink
Next i
End Sub

One approach I have considered taking is to use the VB_Name constant
- does anyone know how to retrieve this from the module?
--
There are 10 types of people in the world - those who understand binary and those who don't.