Файл xls - запрет открытия файла, если он уже открыт
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Файл xls - запрет открытия файла, если он уже... Expand / Collapse
Автор
Сообщение
19.05.2007 23:19
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 05.09.2007 20:21
Сообщ.: 64, Visits: 685
Привет!
Вот столкнулся с проблемой (для меня очень серьезной):
Есть программа, которая хранит свои данные в файле xls. Есть пользователи, кторые работаю в данной прграмме, но имеют плохие нервы. Поэтому, когда они запускают программу, если сразу не появилось окно, то они начинают тыкать на ярлык запуска снова и снова. В результате появляется большое количество открытого одного и того же файла. Причем открывается этот файл только для чтения.
Программа не может сохранить данные.

Пытался сдеать следующее: когда программа запускается, то она ищет некий файл "запуск.txt", который сама же и создает при запуске. Т.е. если файл существует, то программа не запускается. При закрытии программы файл удаляется.
Но это не решило проблему, т.к. у некоторых пользователей все равно иногда открывается файл, в котором хранятся данные только для чтения. Либо они особо "одаренные", либо у меня и вправду руки не оттуда растут.

Я думаю, что можно сделать проверку, если файл открыт только для чтения (несколько раз), то программа выводит пользователю сообщение об ошибке и рекомендует перезагрузить компьютер.

Может еще есть какие соображения? И как проверить, что файл уже открыт? Спасибо.
Сообщ. #913429
20.05.2007 17:05
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.09.2008 21:44
Сообщ.: 267, Visits: 3 151
Такой макрос закроет вторые экземпляры, но сообщение об открытии останется:

Private Sub Workbook_Open()
Dim WB As Workbook, i As Long
For Each WB In Application.Workbooks
    If ThisWorkbook.Name = WB.Name Then
        If i > 1 Then ThisWorkbook.Close False
        i = i + 1
    End If
Next
End Sub

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

Сообщ. #913438
22.05.2007 18:00
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 14.11.2008 9:56
Сообщ.: 19, Visits: 158
If Workbooks("...").ReadOnly = True Then Workbooks("...").Close: MsgBox ""

Private Sub Workbook_Open()
    If ThisWorkbook.ReadOnly Then MsgBox "": ThisWorkbook.Close
End Sub
Сообщ. #913565
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, VladConn

Время GMT +3:00, Сейчас 10:33