Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Очередь записи данных в книгу excel, Макрос запускается на нескольких компьютерах в сети. Обеспечить одновременное сохранение?
 
Спасибо, буду пробовать!
Очередь записи данных в книгу excel, Макрос запускается на нескольких компьютерах в сети. Обеспечить одновременное сохранение?
 
Юрий, подскажите, как проверить не открыта ли книга на другом компьютере?
Я не очень силен в VBA, пока могу лишь проверить, не открыта ли книга на компьютере, на котором выполняется макрос. Делаю это функцией:


Код
'Проверяем не открыт ли файл отчета. Если нет - открываем

If Not IsBookOpen(ReportName) Then
        Workbooks.Open (ReportPath & ReportName)
End If  
Код
Function IsBookOpen(wbName As String) As Boolean
'эта Функция просматривает все открытые книги и если находит среди них книгу с указанным именем, то функция возвращает True.  
 
Dim wbBook As Workbook
    For Each wbBook In Workbooks
        If wbBook.Name <> ThisWorkbook.Name Then
            If Windows(wbBook.Name).Visible Then
                If wbBook.Name = wbName Then IsBookOpen = True: Exit For
            End If
        End If
    Next wbBook
End Function
 
А как проверить не открыта ли у кого-то другого?
Очередь записи данных в книгу excel, Макрос запускается на нескольких компьютерах в сети. Обеспечить одновременное сохранение?
 
Добрый день!
Есть типовая книга excel (своего рода форма), которой пользуются все сотрудники. Заполнив необходимые ячейки они кнопкой запускают макрос, который переносит все внесенные данные в файл-отчет.
Если пользователи запускают макрос по-очереди, все работает прекрасно... Но возможна ситуация, при которой пользователь запустит макрос в момент выполнения макроса на другом компьютере.
Пробовал делать книгу-отчет общей, для одновременной записи, но при ее сохранении макросом вылазит сообщение о конфликте. Пользователи впадают в ступор. Часть данных в отчет не попадает.
Есть мысль сделать очередь записи в книгу-отчет. Т.е. в макросе проверять доступна ли книга на запись, если нет, то ждать 20 секунд и проверять снова. Делать это до тех пор, пока файл не освободится и данные не будут внесены.

Прошу помочь реализовать это в VBA, а именно:
1) проверить доступен ли файл по заданному полному пути за запись;
2) грамотно реализовать ожидание, чтобы не загружать процессор и не подвешивать процесс excel.

Заранее благодарен за помощь!
Изменено: Challenger - 17.01.2014 12:52:25
Страницы: 1
Наверх