Проверка: открыт ли файл другим пользователем.

Программирование на Visual Basic for Applications
anatol83
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 27.10.2008 (Пн) 0:45

Проверка: открыт ли файл другим пользователем.

Сообщение anatol83 » 26.11.2008 (Ср) 23:38

Имеется локальная сеть. В папке, находящейся в общем доступе имеется файл, который также находится в общем доступе. Как программно (Excel VBA) узнать открыт ли он другим пользователем?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Проверка: открыт ли файл другим пользователем.

Сообщение alibek » 27.11.2008 (Чт) 8:56

Какой файл? XLS?
Lasciate ogni speranza, voi ch'entrate.

anatol83
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 27.10.2008 (Пн) 0:45

Re: Проверка: открыт ли файл другим пользователем.

Сообщение anatol83 » 27.11.2008 (Чт) 9:46

Да, xls!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Проверка: открыт ли файл другим пользователем.

Сообщение alibek » 27.11.2008 (Чт) 9:51

Смотри свойство книги UserStatus.
Lasciate ogni speranza, voi ch'entrate.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Проверка: открыт ли файл другим пользователем.

Сообщение Денис » 27.11.2008 (Чт) 10:04

alibek
Мне кажется, ему надо узнать статус файла еще до открытия. В этом случае расширение не имеет значения и смотреть надо, я полагаю, через fso или функциями api.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский

Re: Проверка: открыт ли файл другим пользователем.

Сообщение dormouse » 07.12.2008 (Вс) 18:05

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

Код: Выделить всё
Sub main()
Dim iFile as integer,strFileName  as String
iFile = FreeFile
On Error Goto ErrorHandler
Open strFileName For Binary Access Write Lock Write As #iFile
Close #iFile

....

Exit Sub
ErrorHandler:
Select Case err.Number
Case 70 :    MsgBox "Файл заблокирован"
Case Else: MsgBox err.Description, , err.Number
End Select
VBA, MSA97

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Проверка: открыт ли файл другим пользователем.

Сообщение alibek » 08.12.2008 (Пн) 21:58

dormouse писал(а):Case 70 : MsgBox "Файл заблокирован"

Не очень хороший способ, все-таки.
У такой ошибки более вероятна другая причина, нежели то, что файл уже открыт кем-то.
Lasciate ogni speranza, voi ch'entrate.

GWolf
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 30.03.2009 (Пн) 5:55

Re: Проверка: открыт ли файл другим пользователем.

Сообщение GWolf » 02.04.2009 (Чт) 9:27

А если так:

Код: Выделить всё
Sub proverka()
   Dim fil1 as Boolean
   dim wbk as Workbook

   fil1=false
   For Each wbk In Workbooks
      Select Case wbk.Name
          Case "Книга1.xls"
             fil1=true
      End Select
   Next

   if fil1 =false then
      Workbooks.Open Filename:= "Книга1.xls"
   end if

   with Workbooks("Книга1.xls")
       'Ваш код
   End with

   if fil1 = false then
      Workbooks("Книга1.xls").Close
   else
      Workbooks("Книга1.xls").Save
   end if
End Sub

[Viper] :: Используй тэг CODE для оформления кода. Замечание на первый раз устное

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Проверка: открыт ли файл другим пользователем.

Сообщение Viper » 02.04.2009 (Чт) 12:35

Ндя... А с чего вдруг файл, открытый другим пользователем окажется в списке открытых книг в твоем экземпляре Excel?
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 52

    TopList