Function BookOpenClosed(path As String) As Boolean Dim myBook As Workbook On Error Resume Next Set myBook = Workbooks(path) BookOpenClosed = Not myBook Is Nothing End Function
Privat Sub Zapis_Click() path = "//сеть/тест.xlsm" 260: If BookOpenClosed(path) = True Then lRetVal = MsgBox("Повторите попытку через 15 секунд.", vbRetryCancel, vbExclamation) Select Case lRetVal Case vbCancel Exit Sub Case vbRetry GoTo 260 End Select Workbooks.Open path, ReadOnly:=False End Sub
[/vba] На просторах интернета нашел подобную функцию, но упорно не хочет работать у меня в файле. Смысл проверить не открыта ли книга другим пользователем из сети, если нет, то открыть книгу. Правильно, что данный код я разместил в форме?
[vba]
Код
Function BookOpenClosed(path As String) As Boolean Dim myBook As Workbook On Error Resume Next Set myBook = Workbooks(path) BookOpenClosed = Not myBook Is Nothing End Function
Privat Sub Zapis_Click() path = "//сеть/тест.xlsm" 260: If BookOpenClosed(path) = True Then lRetVal = MsgBox("Повторите попытку через 15 секунд.", vbRetryCancel, vbExclamation) Select Case lRetVal Case vbCancel Exit Sub Case vbRetry GoTo 260 End Select Workbooks.Open path, ReadOnly:=False End Sub
[/vba] На просторах интернета нашел подобную функцию, но упорно не хочет работать у меня в файле. Смысл проверить не открыта ли книга другим пользователем из сети, если нет, то открыть книгу. Правильно, что данный код я разместил в форме?Паштет
Сообщение отредактировал Паштет - Пятница, 02.12.2022, 10:09
Видел эту тему и другие. Много что перепробовал, но выдает ошибку:
Цитата
ByRet argument type mismatch
и выделяет в строчке:
Цитата
If BookOpenClosed(path) = True Then lRetVal = MsgBox("Повторите попытку через 15 секунд.", vbRetryCancel, vbExclamation)
полное имя файла. В связи с этим, мне хочется понять, будет ли этот код работать полностью из формы или он должен в модуле лежать? Или иное какие-то расположение, но нигде ответов найти не смог.
Видел эту тему и другие. Много что перепробовал, но выдает ошибку:
Цитата
ByRet argument type mismatch
и выделяет в строчке:
Цитата
If BookOpenClosed(path) = True Then lRetVal = MsgBox("Повторите попытку через 15 секунд.", vbRetryCancel, vbExclamation)
полное имя файла. В связи с этим, мне хочется понять, будет ли этот код работать полностью из формы или он должен в модуле лежать? Или иное какие-то расположение, но нигде ответов найти не смог.Паштет
Сообщение отредактировал Паштет - Пятница, 02.12.2022, 12:09
Вставил в стандартный модуль. Вписал туда же: [vba]
Код
Sub BOS() 260: If BookOpenClosed(path) = True Then lRetVal = MsgBox("Повторите попытку через 15 секунд.", vbRetryCancel, vbExclamation) Select Case lRetVal Case vbCancel Exit Sub Case vbRetry GoTo 260 End Select end sub
[/vba] В форму добавил этот BOS, но при запуске из формы, все та же ошибка:
Цитата
ByRef argument type mismatch
и указывает на то же место в коде, только уже в модуле.
Вставил в стандартный модуль. Вписал туда же: [vba]
Код
Sub BOS() 260: If BookOpenClosed(path) = True Then lRetVal = MsgBox("Повторите попытку через 15 секунд.", vbRetryCancel, vbExclamation) Select Case lRetVal Case vbCancel Exit Sub Case vbRetry GoTo 260 End Select end sub
[/vba] В форму добавил этот BOS, но при запуске из формы, все та же ошибка:
Цитата
ByRef argument type mismatch
и указывает на то же место в коде, только уже в модуле.Паштет
По ссылке RAN имеется следующий код, который я тоже пробовал и получал ту же ошибку: [vba]
Код
Function IsBookOpen(wbName As String) As Boolean Dim wbBook As Workbook: On Error Resume Next Set wbBook = Workbooks(wbName) IsBookOpen = Not wbBook Is Nothing End Function
[/vba] У меня правда возник вопрос: приставка wb перед Name что-то обозначает для кода или это единое название переменной?
По ссылке RAN имеется следующий код, который я тоже пробовал и получал ту же ошибку: [vba]
Код
Function IsBookOpen(wbName As String) As Boolean Dim wbBook As Workbook: On Error Resume Next Set wbBook = Workbooks(wbName) IsBookOpen = Not wbBook Is Nothing End Function
[/vba] У меня правда возник вопрос: приставка wb перед Name что-то обозначает для кода или это единое название переменной?Паштет