Следующий код - это функция, которая принимает в качестве входных данных имя целевой рабочей книги для проверки, если она уже открыта, а также экземпляр приложения Excel, в котором она может быть открыта. Затем функция будет циклически перебирать открытые книги в этом экземпляре приложения. Если целевая рабочая книга открыта, то возвращается объект рабочей книги. Если книга еще не открыта, целевая рабочая книга открывается и затем возвращается.
Я пытаюсь трактовать аргумент "app" как необязательный вход, так как обычно это будет только один экземпляр Excel. Однако в следующем формате я получаю следующую ошибку компиляции: «Требуется постоянное выражение».
Function wbOpen(currFile, Optional app As Application = Application) As Workbook
Dim oWB As Workbook
currFile = StrConv(currFile, vbLowerCase)
For Each oWB In app.Workbooks
oWBName = StrConv(oWB.name, vbLowerCase)
If oWBName = currFile Then
fileOpen = True
Exit For
End If
Next oWB
If Not fileOpen Then Set oWB = Workbooks.Open(currFile)
Set wbOpen = oWB
End Function
Всякий раз, когда я ссылаюсь на текущее приложение в методе, я могу просто написать «Приложение. [Метод или свойство]».
Как явно указать ссылку на активный экземпляр приложения Excel, чтобы иметь его в качестве значения по умолчанию для аргумента "app"?
Если возможно, я бы предпочел, чтобы у "app" не было значения по умолчанию, а затем проверил, равно ли это значение нулю в коде.