@@ -39,9 +39,9 @@ Public Sub createMenu()
39
39
caption = projectName & " (" & Dir(project.fileName) & ")" '<- this can throw error
40
40
41
41
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 & """'"
45
45
46
46
addMenuItem exSubMenu, exCommand, caption
47
47
addMenuItem imSubMenu, imCommand, caption
@@ -121,29 +121,28 @@ Public Sub refreshMenu()
121
121
menu.createMenu
122
122
End Sub
123
123
124
- Public Sub exportVbProject (ByVal projectName As String )
124
+ Public Sub exportVbProject (ByVal projectPath As String )
125
125
On Error GoTo exportVbProject_Error
126
126
127
127
Dim project As VBProject
128
- Set project = Application.VBE.VBProjects(projectName )
128
+ Set project = GetProjectByPath(projectPath )
129
129
Build.exportVbaCode project
130
130
Dim wb As Workbook
131
131
Set wb = Build.openWorkbook(project.fileName)
132
132
NamedRanges.exportNamedRanges wb
133
133
MsgBox "Finished exporting code for: " & project.name
134
134
135
- On Error GoTo 0
136
135
Exit Sub
137
136
exportVbProject_Error:
138
137
ErrorHandling.handleError "Menu.exportVbProject"
139
138
End Sub
140
139
141
140
142
- Public Sub importVbProject (ByVal projectName As String )
141
+ Public Sub importVbProject (ByVal projectPath As String )
143
142
On Error GoTo importVbProject_Error
144
143
145
144
Dim project As VBProject
146
- Set project = Application.VBE.VBProjects(projectName )
145
+ Set project = GetProjectByPath(projectPath )
147
146
Build.importVbaCode project
148
147
Dim wb As Workbook
149
148
Set wb = Build.openWorkbook(project.fileName)
@@ -157,11 +156,11 @@ importVbProject_Error:
157
156
End Sub
158
157
159
158
160
- Public Sub formatVbProject (ByVal projectName As String )
159
+ Public Sub formatVbProject (ByVal projectPath As String )
161
160
On Error GoTo formatVbProject_Error
162
161
163
162
Dim project As VBProject
164
- Set project = Application.VBE.VBProjects(projectName )
163
+ Set project = GetProjectByPath(projectPath )
165
164
Formatter.formatProject project
166
165
MsgBox "Finished formatting code for: " & project.name & vbNewLine _
167
166
& vbNewLine _
@@ -250,3 +249,22 @@ Function GetFolder(InitDir As String) As String
250
249
GetFolder = sItem
251
250
Set fldr = Nothing
252
251
End Function
252
+
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
+ On Error GoTo skipone
259
+ If UCase(project.fileName) = UCase(projectPath) Then
260
+ Set GetProjectByPath = project
261
+ Exit Function
262
+ End If
263
+ nextprj:
264
+ Next project
265
+ 'If not found return nothing
266
+ Exit Function
267
+ skipone:
268
+ Resume nextprj
269
+ End Function
270
+
0 commit comments