@@ -417,12 +417,12 @@ Private Sub ImportFilesFromImportCollection( _
417417 If (0 / 1 ) + (Not Not m_CLI.ExecuteList) Then
418418 AccessProgressBar.Init "Run executes ..." , UBound(m_CLI.ExecuteList) + 1 , 1
419419 For i = 0 To UBound(m_CLI.ExecuteList)
420- AccessProgressBar.PerformStep
421- If StringTools.Contains(m_CLI.ExecuteList(i), REPOSTITORY_ROOT_CODE_PRIVATEROOT) Then
422- Eval VBA.Strings.Replace(m_CLI.ExecuteList(i), REPOSTITORY_ROOT_CODE_PRIVATEROOT, LocalRepositoryRootDirectory())
423- Else
424- Eval ( m_CLI.ExecuteList(i) )
425- End If
420+ AccessProgressBar.PerformStep
421+ If StringTools.Contains(m_CLI.ExecuteList(i), REPOSTITORY_ROOT_CODE_PRIVATEROOT) Then
422+ ApplicationRunProcedure VBA.Strings.Replace(m_CLI.ExecuteList(i), REPOSTITORY_ROOT_CODE_PRIVATEROOT, LocalRepositoryRootDirectory())
423+ Else
424+ ApplicationRunProcedure m_CLI.ExecuteList(i)
425+ End If
426426 Next
427427 If AccessProgressBar.IsInitialized Then AccessProgressBar.Clear
428428 End If
@@ -438,6 +438,95 @@ Private Sub ImportFilesFromImportCollection( _
438438
439439End Sub
440440
441+ Private Sub ApplicationRunProcedure (ByVal ProcedureCall As String )
442+
443+ If InStr(1 , ProcedureCall, "." ) Then
444+ If TryRunAddInProcedure(ProcedureCall) Then
445+ Exit Sub
446+ End If
447+ End If
448+
449+ CallApplicationRun ProcedureCall
450+
451+ End Sub
452+
453+ Private Function TryRunAddInProcedure (ByVal ProcedureCall As String ) As Boolean
454+
455+ Dim AddInFilePath As String
456+
457+ ProcedureCall = Replace(ProcedureCall, "%addins%" , Environ$("appdata" ) & "\Microsoft\AddIns" , , , vbTextCompare)
458+ ProcedureCall = Replace(ProcedureCall, "%appdata%" , Environ("appdata" ), , , vbTextCompare)
459+
460+ AddInFilePath = Left(ProcedureCall, InStrRev(ProcedureCall, "." )) & "accda"
461+ If Len(VBA.Dir(AddInFilePath)) = 0 Then
462+ Exit Function
463+ End If
464+
465+ TryRunAddInProcedure = True
466+ CallApplicationRun ProcedureCall
467+
468+ End Function
469+
470+ Private Function CallApplicationRun (ByVal ProcedureCall As String )
471+
472+ Dim ProcName As String
473+ Dim ProcParams() As String
474+ Dim ParamCount As Long
475+
476+ ParamCount = GetProcNameAndParams(ProcedureCall, ProcName, ProcParams)
477+
478+ Select Case ParamCount
479+ Case 0
480+ Application.Run ProcName
481+ Case 1
482+ Application.Run ProcName, ProcParams(0 )
483+ Case 2
484+ Application.Run ProcName, ProcParams(0 ), ProcParams(1 )
485+ Case 3
486+ Application.Run ProcName, ProcParams(0 ), ProcParams(1 ), ProcParams(2 )
487+ Case 4
488+ Application.Run ProcName, ProcParams(0 ), ProcParams(1 ), ProcParams(2 ), ProcParams(3 )
489+ Case Else
490+ Err.Raise vbObjectError, "ACLibFileManager.CallApplicationRun" , "Only 4 parameters implemented"
491+ End Select
492+
493+ End Function
494+
495+ Private Function GetProcNameAndParams (ByVal ProcedureCall As String , ByRef ProcName As String , ByRef ProcParams() As String ) As Long
496+
497+ Dim ProcParamString As String
498+ Dim ParamPos As Long
499+
500+ ProcedureCall = Replace(ProcedureCall, "()" , vbNullString)
501+
502+ ParamPos = InStr(1 , ProcedureCall, "(" )
503+
504+ If ParamPos = 0 Then
505+ ProcName = ProcedureCall
506+ GetProcNameAndParams = 0
507+ Exit Function
508+ End If
509+
510+ ProcName = Left(ProcedureCall, ParamPos - 1 )
511+ ProcParamString = Trim(Mid(ProcedureCall, ParamPos + 1 ))
512+
513+ If Right(ProcParamString, 1 ) = ")" Then
514+ ProcParamString = Left(ProcParamString, Len(ProcParamString) - 1 )
515+ End If
516+
517+ ProcParams = Split(ProcParamString, "," )
518+
519+ Dim i As Long
520+ For i = LBound(ProcParams) To UBound(ProcParams)
521+ ProcParams(i) = Trim(ProcParams(i))
522+ If Left(ProcParams(i), 1 ) = """" Then
523+ ProcParams(i) = Mid(ProcParams(i), 2 , Len(ProcParams(i)) - 2 )
524+ End If
525+ Next
526+
527+ GetProcNameAndParams = UBound(ProcParams) + 1
528+
529+ End Function
441530
442531Private Function IgnoreFolder (ByRef TestFolder As Object ) As Boolean
443532'/*
0 commit comments