Skip to content

Commit 85fb3f6

Browse files
committed
Fix issue with multiple VBA projects having the same project name (Issue hilkoc#3 - hilkoc#3)
1 parent e8af086 commit 85fb3f6

File tree

2 files changed

+26
-10
lines changed

2 files changed

+26
-10
lines changed

src/vbaDeveloper.xlam/Menu.bas

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ Public Sub createMenu()
3939
caption = projectName & " (" & Dir(project.fileName) & ")" '<- this can throw error
4040

4141
Dim exCommand As String, imCommand As String, formatCommand As String
42-
exCommand = "'Menu.exportVbProject """ & projectName & """'"
43-
imCommand = "'Menu.importVbProject """ & projectName & """'"
44-
formatCommand = "'Menu.formatVbProject """ & projectName & """'"
42+
exCommand = "'Menu.exportVbProject """ & project.fileName & """'"
43+
imCommand = "'Menu.importVbProject """ & project.fileName & """'"
44+
formatCommand = "'Menu.formatVbProject """ & project.fileName & """'"
4545

4646
addMenuItem exSubMenu, exCommand, caption
4747
addMenuItem imSubMenu, imCommand, caption
@@ -121,11 +121,11 @@ Public Sub refreshMenu()
121121
menu.createMenu
122122
End Sub
123123

124-
Public Sub exportVbProject(ByVal projectName As String)
124+
Public Sub exportVbProject(ByVal projectPath As String)
125125
On Error GoTo exportVbProject_Error
126126

127127
Dim project As VBProject
128-
Set project = Application.VBE.VBProjects(projectName)
128+
Set project = GetProjectByPath(projectPath)
129129
Build.exportVbaCode project
130130
Dim wb As Workbook
131131
Set wb = Build.openWorkbook(project.fileName)
@@ -139,11 +139,11 @@ exportVbProject_Error:
139139
End Sub
140140

141141

142-
Public Sub importVbProject(ByVal projectName As String)
142+
Public Sub importVbProject(ByVal projectPath As String)
143143
On Error GoTo importVbProject_Error
144144

145145
Dim project As VBProject
146-
Set project = Application.VBE.VBProjects(projectName)
146+
Set project = GetProjectByPath(projectPath)
147147
Build.importVbaCode project
148148
Dim wb As Workbook
149149
Set wb = Build.openWorkbook(project.fileName)
@@ -157,11 +157,11 @@ importVbProject_Error:
157157
End Sub
158158

159159

160-
Public Sub formatVbProject(ByVal projectName As String)
160+
Public Sub formatVbProject(ByVal projectPath As String)
161161
On Error GoTo formatVbProject_Error
162162

163163
Dim project As VBProject
164-
Set project = Application.VBE.VBProjects(projectName)
164+
Set project = GetProjectByPath(projectPath)
165165
Formatter.formatProject project
166166
MsgBox "Finished formatting code for: " & project.name & vbNewLine _
167167
& vbNewLine _
@@ -250,3 +250,17 @@ Function GetFolder(InitDir As String) As String
250250
GetFolder = sItem
251251
Set fldr = Nothing
252252
End Function
253+
254+
Function GetProjectByPath(ByVal projectPath As String) As VBProject
255+
'Simple search to find project by file path
256+
Dim project As VBProject
257+
For Each project In Application.VBE.VBProjects
258+
If UCase(project.fileName) = UCase(projectPath) Then
259+
Set GetProjectByPath = project
260+
Exit Function
261+
End If
262+
Next project
263+
'If not found return nothing
264+
Set GetProjectByPath = Nothing
265+
End Function
266+

src/vbaDeveloper.xlam/Test.bas

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ Public Sub testExport()
4646
Dim proj_name As String
4747
proj_name = "vbaDeveloper"
4848

49-
menu.exportVbProject proj_name
49+
Dim vbaProject As Object
50+
Set vbaProject = Application.VBE.VBProjects(proj_name)
51+
menu.exportVbProject vbaProject.fileName
5052
End Sub
5153

5254

0 commit comments

Comments
 (0)