Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проверка открыт ли XLS другим пользователем - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Проверка открыт ли XLS другим пользователем
Валерьянка Дата: Воскресенье, 23.03.2014, 15:10 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Добрый день! Уважаемые форумчане!
Есть книга .xls которая размещена на рабочей локалке (SharePoint)
Работа в книге ведется несколькими пользователями.

Имеется следующая задача, определить средствами VBA открыт ли этот файл другим пользователем.

Пробую макрос, взят здесь: http://support.microsoft.com/kb/213299/ru
Не работает ни при каком раскладе, т.е. всегда -"Книга доступна", даже если там кто-то сдит :(

[vba]
Код
Sub ПроверкаКниги()
     If IsOpen("http://adress/DocLib1/ОбщаяКнига1.xls") Then ' так не работает
     'If IsOpen("ОбщаяКнига1.xls") Then - и так тоже не работает
        MsgBox "Книга открыта другим пользователем."
     Else
        MsgBox "Книга доступна."
     End If
End Sub

Function IsOpen(FileName As String) As Boolean
     Dim wb As Workbook
     For Each wb In Application.Workbooks
         If UCase(wb.Name) = UCase(FileName) Then
             IsOpen = True
             Exit Function
         End If
     Next wb
     IsOpen = False
End Function
[/vba]

Помогите, пожалуйста
 
Ответить
СообщениеДобрый день! Уважаемые форумчане!
Есть книга .xls которая размещена на рабочей локалке (SharePoint)
Работа в книге ведется несколькими пользователями.

Имеется следующая задача, определить средствами VBA открыт ли этот файл другим пользователем.

Пробую макрос, взят здесь: http://support.microsoft.com/kb/213299/ru
Не работает ни при каком раскладе, т.е. всегда -"Книга доступна", даже если там кто-то сдит :(

[vba]
Код
Sub ПроверкаКниги()
     If IsOpen("http://adress/DocLib1/ОбщаяКнига1.xls") Then ' так не работает
     'If IsOpen("ОбщаяКнига1.xls") Then - и так тоже не работает
        MsgBox "Книга открыта другим пользователем."
     Else
        MsgBox "Книга доступна."
     End If
End Sub

Function IsOpen(FileName As String) As Boolean
     Dim wb As Workbook
     For Each wb In Application.Workbooks
         If UCase(wb.Name) = UCase(FileName) Then
             IsOpen = True
             Exit Function
         End If
     Next wb
     IsOpen = False
End Function
[/vba]

Помогите, пожалуйста

Автор - Валерьянка
Дата добавления - 23.03.2014 в 15:10
RAN Дата: Воскресенье, 23.03.2014, 15:53 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
попробуйте
[vba]
Код
wb.FullName
[/vba]
А вообще, пару лет назад ZVI на Планете выкладывал вариант Function IsOpen, но найти не могу.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщениепопробуйте
[vba]
Код
wb.FullName
[/vba]
А вообще, пару лет назад ZVI на Планете выкладывал вариант Function IsOpen, но найти не могу.

Автор - RAN
Дата добавления - 23.03.2014 в 15:53
Serge_007 Дата: Воскресенье, 23.03.2014, 15:59 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеПо теме:
http://programmersforum.ru/showthread.php?t=115053
http://www.vbnet.ru/forum/show.aspx?id=163266

Автор - Serge_007
Дата добавления - 23.03.2014 в 15:59
RAN Дата: Воскресенье, 23.03.2014, 16:25 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Нашел в загашнике.

Я тогда начал делать постучаться - файл отдай, но забросил.
К сообщению приложен файл: 1435848.xls (42.0 Kb)


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Воскресенье, 23.03.2014, 16:27
 
Ответить
СообщениеНашел в загашнике.

Я тогда начал делать постучаться - файл отдай, но забросил.

Автор - RAN
Дата добавления - 23.03.2014 в 16:25
Валерьянка Дата: Воскресенье, 23.03.2014, 16:31 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
по ссылке:
http://programmersforum.ru/showthread.php?t=115053
Понравилась идея от IgorGO
а еще попытаться удалить!!!
если не удалось - значит был занят, а удалось - был свободен)))

по ссылке:
http://www.vbnet.ru/forum/show.aspx?id=163266
судя по комментам код не добит

может есть у кого-нибудь готовые решения?
 
Ответить
Сообщениепо ссылке:
http://programmersforum.ru/showthread.php?t=115053
Понравилась идея от IgorGO
а еще попытаться удалить!!!
если не удалось - значит был занят, а удалось - был свободен)))

по ссылке:
http://www.vbnet.ru/forum/show.aspx?id=163266
судя по комментам код не добит

может есть у кого-нибудь готовые решения?

Автор - Валерьянка
Дата добавления - 23.03.2014 в 16:31
nilem Дата: Воскресенье, 23.03.2014, 17:24 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
еще вот здесь


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениееще вот здесь

Автор - nilem
Дата добавления - 23.03.2014 в 17:24
Валерьянка Дата: Воскресенье, 23.03.2014, 18:47 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
RAN, спасибо, завтра на работе попробую
 
Ответить
СообщениеRAN, спасибо, завтра на работе попробую

Автор - Валерьянка
Дата добавления - 23.03.2014 в 18:47
DJ_Marker_MC Дата: Воскресенье, 23.03.2014, 20:22 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 991
Репутация: 213 ±
Замечаний: 0% ±

Excel 2019
А разве при открытии файла (если он уже кем то открыт) не предлагается открытие в режиме "ТОЛЬКО ЧТЕНИЕ" ??? (конечно если в файле не открыт общий доступ).
 
Ответить
СообщениеА разве при открытии файла (если он уже кем то открыт) не предлагается открытие в режиме "ТОЛЬКО ЧТЕНИЕ" ??? (конечно если в файле не открыт общий доступ).

Автор - DJ_Marker_MC
Дата добавления - 23.03.2014 в 20:22
doober Дата: Понедельник, 24.03.2014, 02:54 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 967
Репутация: 330 ±
Замечаний: 0% ±

Excel 2010
Код в модуль книги ОбщаяКнига1.xls
Вам остается только файлик прочитать S.txt и определить статус книги.
Проверил у себя в сети,все работает правильно.

[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
F$ = Me.Path & "\S.txt"
   Open F$ For Output As #1
     Print #1, "Close"
     Close #1
End Sub

Private Sub Workbook_Open()
F$ = Me.Path & "\S.txt"
   Open F$ For Output As #1
     Print #1, "Open"
     Close #1
End Sub
[/vba]


 
Ответить
СообщениеКод в модуль книги ОбщаяКнига1.xls
Вам остается только файлик прочитать S.txt и определить статус книги.
Проверил у себя в сети,все работает правильно.

[vba]
Код
Private Sub Workbook_BeforeClose(Cancel As Boolean)
F$ = Me.Path & "\S.txt"
   Open F$ For Output As #1
     Print #1, "Close"
     Close #1
End Sub

Private Sub Workbook_Open()
F$ = Me.Path & "\S.txt"
   Open F$ For Output As #1
     Print #1, "Open"
     Close #1
End Sub
[/vba]

Автор - doober
Дата добавления - 24.03.2014 в 02:54
Валерьянка Дата: Понедельник, 24.03.2014, 11:21 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
doober, Спасибо
У меня получилось не так изящно

Код в Общей книге:
[vba]
Код
Sub auto_open()
Sheets(1).[z1] = "Занят"
ActiveWorkbook.Save
End Sub
Sub auto_close()
Sheets(1).[z1] = "Свободен"
ActiveWorkbook.Save
End Sub
[/vba]

Пришлось создать файл indikator.xls (в ячейке A1 ссылка на значение Z1 Общей книги)

[vba]
Код
Sub Проверка()
Workbooks.Open Filename:="http://.../indikator.xls", UpdateLinks:=3
Dim kontroller As String
kontroller = Sheets(1).[a1].Value
Workbooks("indikator.xls").Close False
If kontroller = "Занят" Then
MsgBox "Журнал регистрации ЗАНЯТ (открыт другим пользователем)!"
Else
MsgBox "Журнал регистрации ДОСТУПЕН !"
End If
End Sub
[/vba]


Сообщение отредактировал Валерьянка - Понедельник, 24.03.2014, 11:24
 
Ответить
Сообщениеdoober, Спасибо
У меня получилось не так изящно

Код в Общей книге:
[vba]
Код
Sub auto_open()
Sheets(1).[z1] = "Занят"
ActiveWorkbook.Save
End Sub
Sub auto_close()
Sheets(1).[z1] = "Свободен"
ActiveWorkbook.Save
End Sub
[/vba]

Пришлось создать файл indikator.xls (в ячейке A1 ссылка на значение Z1 Общей книги)

[vba]
Код
Sub Проверка()
Workbooks.Open Filename:="http://.../indikator.xls", UpdateLinks:=3
Dim kontroller As String
kontroller = Sheets(1).[a1].Value
Workbooks("indikator.xls").Close False
If kontroller = "Занят" Then
MsgBox "Журнал регистрации ЗАНЯТ (открыт другим пользователем)!"
Else
MsgBox "Журнал регистрации ДОСТУПЕН !"
End If
End Sub
[/vba]

Автор - Валерьянка
Дата добавления - 24.03.2014 в 11:21
Валерьянка Дата: Понедельник, 24.03.2014, 12:47 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
doober, странно, но при программном открытии общей книги (макросом) возникает ошибка при выполнении Workbook_Open()
Как это можно обойти?
 
Ответить
Сообщениеdoober, странно, но при программном открытии общей книги (макросом) возникает ошибка при выполнении Workbook_Open()
Как это можно обойти?

Автор - Валерьянка
Дата добавления - 24.03.2014 в 12:47
doober Дата: Понедельник, 24.03.2014, 15:06 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 967
Репутация: 330 ±
Замечаний: 0% ±

Excel 2010
У меня такая проблема не возникает.
Возможно не правильно получаете статус книги
ActiveWorkbook.Save-вы уверены на 100%,что в этот момент активная книга та, на которую вы расчитываете.
Проверте правильность пути к книге,проанализируйте код в общей книга.
И перейдите на текстовик,так проще и надежнее
Видео здесь




Сообщение отредактировал doober - Понедельник, 24.03.2014, 15:06
 
Ответить
СообщениеУ меня такая проблема не возникает.
Возможно не правильно получаете статус книги
ActiveWorkbook.Save-вы уверены на 100%,что в этот момент активная книга та, на которую вы расчитываете.
Проверте правильность пути к книге,проанализируйте код в общей книга.
И перейдите на текстовик,так проще и надежнее
Видео здесь

Автор - doober
Дата добавления - 24.03.2014 в 15:06
Валерьянка Дата: Понедельник, 24.03.2014, 15:56 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
doober,
И перейдите на текстовик,так проще и надежнее
Да да использую именно ваш метод указанный выше
[vba]
Код
Private Sub Workbook_Open()
F$ = Me.Path & "\S.txt"
Open F$ For Output As #1
     Print #1, "Open"
     Close #1
End Sub
[/vba]
Путь указан верно, общая книга открывается вручную без проблем
При открытии Обшей книги макросом (для внесения изменений программно) возникает ошибка
 
Ответить
Сообщениеdoober,
И перейдите на текстовик,так проще и надежнее
Да да использую именно ваш метод указанный выше
[vba]
Код
Private Sub Workbook_Open()
F$ = Me.Path & "\S.txt"
Open F$ For Output As #1
     Print #1, "Open"
     Close #1
End Sub
[/vba]
Путь указан верно, общая книга открывается вручную без проблем
При открытии Обшей книги макросом (для внесения изменений программно) возникает ошибка

Автор - Валерьянка
Дата добавления - 24.03.2014 в 15:56
doober Дата: Понедельник, 24.03.2014, 15:59 | Сообщение № 14
Группа: Друзья
Ранг: Ветеран
Сообщений: 967
Репутация: 330 ±
Замечаний: 0% ±

Excel 2010
Текст ошибки?


 
Ответить
СообщениеТекст ошибки?

Автор - doober
Дата добавления - 24.03.2014 в 15:59
Валерьянка Дата: Понедельник, 24.03.2014, 17:08 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
doober,
Текст ошибки?


При открытии общей книги
run time error 52 bad fail name or number
Желтая строка Open F$ For Output As #1

При закрытии
runtime error 75 path/file access error
Желтая строка Open F$ For Output As #1

Код вставлен в ЭтаКнига(не в отдельном модуле)


Сообщение отредактировал Валерьянка - Понедельник, 24.03.2014, 17:32
 
Ответить
Сообщениеdoober,
Текст ошибки?


При открытии общей книги
run time error 52 bad fail name or number
Желтая строка Open F$ For Output As #1

При закрытии
runtime error 75 path/file access error
Желтая строка Open F$ For Output As #1

Код вставлен в ЭтаКнига(не в отдельном модуле)

Автор - Валерьянка
Дата добавления - 24.03.2014 в 17:08
doober Дата: Понедельник, 24.03.2014, 19:36 | Сообщение № 16
Группа: Друзья
Ранг: Ветеран
Сообщений: 967
Репутация: 330 ±
Замечаний: 0% ±

Excel 2010
Цитата
Filename:="http://.../indikator.xls"

У вас скорее всего файл где-то на сервере лежит,а не в сети.
Путь не понимает,поэтому и ругается


 
Ответить
Сообщение
Цитата
Filename:="http://.../indikator.xls"

У вас скорее всего файл где-то на сервере лежит,а не в сети.
Путь не понимает,поэтому и ругается

Автор - doober
Дата добавления - 24.03.2014 в 19:36
Alex_ST Дата: Понедельник, 24.03.2014, 21:44 | Сообщение № 17
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
У меня такая функция в заначке лежит (автора, к сожалению, не помню):[vba]
Код
Function FileIsBusy(File$) As Boolean   ' не открывая файла проверяет, открыт ли он вообще кем-либо
    Dim FN%: FN = FreeFile
    On Error Resume Next
    Open File For Random Access Write Lock Write As #FN
    Close #FN
    FileIsBusy = (Err <> 0)
End Function
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеУ меня такая функция в заначке лежит (автора, к сожалению, не помню):[vba]
Код
Function FileIsBusy(File$) As Boolean   ' не открывая файла проверяет, открыт ли он вообще кем-либо
    Dim FN%: FN = FreeFile
    On Error Resume Next
    Open File For Random Access Write Lock Write As #FN
    Close #FN
    FileIsBusy = (Err <> 0)
End Function
[/vba]

Автор - Alex_ST
Дата добавления - 24.03.2014 в 21:44
Валерьянка Дата: Вторник, 25.03.2014, 12:59 | Сообщение № 18
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Alex_ST, а код макроса подскажите для проверки? %)
 
Ответить
СообщениеAlex_ST, а код макроса подскажите для проверки? %)

Автор - Валерьянка
Дата добавления - 25.03.2014 в 12:59
Hugo Дата: Вторник, 25.03.2014, 14:09 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3689
Репутация: 790 ±
Замечаний: 0% ±

365
Я не Alex, но тоже с заначкой :)
[vba]
Код
Sub Test()
      MsgBox FileIsBusy([b9])
End Sub
[/vba]
В B9 путь к файлу.

P.S. Автора не записал, но кажется это ZVI


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеЯ не Alex, но тоже с заначкой :)
[vba]
Код
Sub Test()
      MsgBox FileIsBusy([b9])
End Sub
[/vba]
В B9 путь к файлу.

P.S. Автора не записал, но кажется это ZVI

Автор - Hugo
Дата добавления - 25.03.2014 в 14:09
Валерьянка Дата: Вторник, 25.03.2014, 15:13 | Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 71
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Hugo, спасибо :D
 
Ответить
СообщениеHugo, спасибо :D

Автор - Валерьянка
Дата добавления - 25.03.2014 в 15:13
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!