Создание процедуры, которая принимает переменную, а затем возвращает другую к вызывающей процедуре в Excel VBA

Я хочу создать функциональность, которая позволит мне передать переменную в процедуру, открыть файл на основе этой переменной и затем вернуть путь к файлу в вызывающую процедуру. У меня есть код для открытия файла и т. Д., Но в процедуре есть несколько мест, где он может быть вызван, я не хочу, чтобы он был там, а просто возвращал путь к файлу в переменную (которую затем можно использовать загрузить поля из открытого файла).

Ниже приведен код для загрузки файла, который я использую, как мне преобразовать его в процедуру, чтобы сделать то, что мне нужно?:

        'Open the file
        NameOfFile = ActiveWorkbook.Worksheets("Parameters").Cells(8, 2).Value
        PathToFile = Left$(NameOfFile, InStrRev(NameOfFile, "\") - 1)
        FileNameNoPath = Mid$(NameOfFile, InStrRev(NameOfFile, "\") + 1)
        NameOfFile = FileNameNoPath
        CompleteFilePath = PathToFile & "\" & NameOfFile

        On Error Resume Next
        Set File1 = Workbooks(NameOfFile)

        If Err.Number <> 0 Then
        'Open the workbook
          Err.Clear
          Set File1 = Workbooks.Open(CompleteFilePath, UpdateLinks:=False)
          CloseIt = True
        End If

        'Check and make sure workbook was opened
        If Err.Number = 1004 Then
            MsgBox "File is missing, please check your path!" _
            & vbNewLine & NameOfFile
            Exit Sub
        End If
        On Error GoTo 0

1 ответ

Решение

Вы имеете в виду, как это?

Option Explicit

Dim FilePath As String

Sub Sample()
    Dim FileToOpen As String

    FileToOpen = "C:\Temp\Sample.xlsx"

    OpenFile FileToOpen

    Debug.Print FilePath
End Sub

Sub OpenFile(strFile As String)
    FilePath = Left$(strFile, InStrRev(strFile, "\") - 1)

    '
    '~~> Rest of the code
    '
End Sub
Другие вопросы по тегам