У Брайана есть сложная книга, которая очень быстро открывает другие вспомогательные книги, а затем закрывает их, сохраняя изменения. У него есть офис с тремя людьми, которые используют его макросы, и иногда у них возникает конфликт, когда два человека пытаются получить заказ на покупку

номер одновременно. Это заставляет книгу PO открываться в режиме «только для чтения» во втором случае, что сбивает пользователей с толку. Брайан интересуется, есть ли строка кода VBA, которая остановит команду «открыть книгу», если целевая книга уже открыта другим пользователем. Таким образом он сможет выявить потенциальные проблемы до того, как они возникнут.

Гораздо проще иметь ваш код, после открытия проверьте, открыта ли книга в режиме только для чтения. Если да, то вы можете предпринять действия, соответствующие вашей ситуации. (Например, вы можете закрыть книгу, подождать короткое время и повторить операцию и проверить.) Вот как вы можете проверить, чтобы увидеть статус только для чтения:

Set wkBook1 = Workbooks.Open("c:\MyBigBook.xlsx")



If wkBook1.ReadOnly Then     wkBook1.Close False End If

Обратите внимание, что именно свойство ReadOnly дает желаемую информацию. Если вам нужно проверить файл заранее, вы можете попробовать использовать некоторые операторы доступа к файлам, доступные в VBA. Вот что делает следующая функция.

Function FileIsLocked(strFileName As String) As Boolean     FileIsLocked = False     On Error Resume Next     Open strFileName For Binary Access Read Write Lock Read Write As #1     Close #1

' If an error occurs, the document is currently open     If Err.Number <> 0 Then        FileIsLocked = True        Err.Clear     End If End Function

Чтобы использовать функцию, передайте ей имя (включая полный путь) книги, которую вы хотите проверить. Функция возвращает True, если файл заблокирован, и False, если это не так. Однако помните, что с момента, когда эта функция проверяет файл, до момента, когда вы действительно пытаетесь открыть файл, он мог быть открыт кем-то другим. Таким образом, первый подход (проверка после попытки открытия) может быть лучшим подходом для использования.)

Также следует отметить, что вы также можете сохранить другие книги как общие книги. Это позволит без проблем открывать их нескольким пользователям. Конечно, вы захотите проверить, как этот подход влияет на данные, которые вы, возможно, хотите сохранить в книгах.

_Примечание: _

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

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (5831) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.