|
|
|
Forum Guru
      
участник
Last Login: 05.09.2007 20:21
Сообщ.: 64,
Visits: 685
|
|
Привет!
Вот столкнулся с проблемой (для меня очень серьезной):
Есть программа, которая хранит свои данные в файле xls. Есть пользователи, кторые работаю в данной прграмме, но имеют плохие нервы. Поэтому, когда они запускают программу, если сразу не появилось окно, то они начинают тыкать на ярлык запуска снова и снова. В результате появляется большое количество открытого одного и того же файла. Причем открывается этот файл только для чтения.
Программа не может сохранить данные.
Пытался сдеать следующее: когда программа запускается, то она ищет некий файл "запуск.txt", который сама же и создает при запуске. Т.е. если файл существует, то программа не запускается. При закрытии программы файл удаляется.
Но это не решило проблему, т.к. у некоторых пользователей все равно иногда открывается файл, в котором хранятся данные только для чтения. Либо они особо "одаренные", либо у меня и вправду руки не оттуда растут.
Я думаю, что можно сделать проверку, если файл открыт только для чтения (несколько раз), то программа выводит пользователю сообщение об ошибке и рекомендует перезагрузить компьютер.
Может еще есть какие соображения? И как проверить, что файл уже открыт? Спасибо.
|
|
|
|
|
Supreme 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
Если пользователи такие нервные, то может быть сделать экзешник для запуска требуемых книг? Или, если файл огромный и открывается долго, сделать малый файл для запуска (можно и надстройку).
|
|
|
|
|
Junior 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
|
|
|
|