Создание процедуры, которая принимает переменную, а затем возвращает другую к вызывающей процедуре в 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