Проверка открыта ли книга...

Программирование на Visual Basic for Applications
Евген
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 66
Зарегистрирован: 01.07.2003 (Вт) 14:13
Откуда: СПб

Проверка открыта ли книга...

Сообщение Евген » 01.08.2003 (Пт) 11:39

День добрый. Как проверить открыта книга или нет :roll:
Ёж птица гордая, пока не пнешь - не полетит!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 01.08.2003 (Пт) 12:16

Посмотри внимательно. Почитай что написано на книге. Если там всего одно предложение а поверх или снизу несколько фамилий, то, скорее всего, это обложка. Если это обложка значит книга закрыта :)

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

Сообщение alibek » 01.08.2003 (Пт) 14:40

Есть способ проще :) (c) Рондо
Если ширина книги больше, чем ее высота, то книга скорее всего открыта :)
Lasciate ogni speranza, voi ch'entrate.

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 01.08.2003 (Пт) 21:34

2alibek а если это альбомная страница или я неправильно книгу держу :?: :?:
Ничто так не ограничивает полёт мысли программиста, как компилятор

G-Hacker
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 01.08.2003 (Пт) 15:31
Откуда: Воронеж

Сообщение G-Hacker » 02.08.2003 (Сб) 10:11

Все очень просто:
Напримр можно сделать так:
application.activeworkbook.codename
В этом случае ты получаешь имя книги которое используется в программе, т.е. если открыть другую книгу ты получишь ее имя и можешь сравнить. Поскольку имя книги(используемое в коде программы) пользователь изменить не может (при условии, что у тебя VBA-проект защищен от просмотра), то можно быть уверенным что книга открыта(активна). Также можно определить и вот так:
application.activewindow.caption, но это очень просто и не совсем надежно. Еще одно полезное свойство это application.activeworkbook.creator, всегда неизменно и уникально (во всяком случае в XP Pro). Ну и еще один способ: application.activeworkbook.fuulname, если ты знаешь, где находится книга на диске.
Да, вот еще один способ:
ты получаешь список всех октрытых книг
application.workbooks.count-это количество
а далле просто перебираешь их по выше описанным свойствам:
fot i=1 to application.workbboks.count
if applivcation.workbboks.item(i).<вышеописанные свойства>=<чему- то> then
<книга открыта>
end if
next i
Вот и все. Если не получится, то напиши - помогу.

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 02.08.2003 (Сб) 21:29

2 corgi, alibek, RayShade может я сейчас нарвусь на ответную грубость или на пристальное внимание к своим топикам со стороны гуру здешнего сайта, но я считаю стыдно господа старожилы так издеваться над новичком.
По моему мнению лучше вообще оставить данный топик без таких, как дали вы ответов, чем зарабатывать на новеньких количество постов и звезды. Отвечайте на вопросы, которые, как вы считаете, достойны вашего уровня, а на такую (по вашему мнению) элементарщину предоставьте возможность ответить подрастающему поколению (с чем кстати успешно справился G-Hacker имеющий на момент написания моего ответа всего 3 поста).
Вспомните то время, когда вы сами были молодыми и зелеными в программировании и как для вас были важны любые крохи информации неважно каким путем добыте. Или вы хотите сказать что до всего что вы сейчас умеете выдошли сами без чьей-либо помощи, и что вы в свое время не задавали глупых вопросов?
Господа, ничего личного но........
Утро добрым не бывает!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.08.2003 (Вс) 5:39

Во-первых, это своеобразная традиция форума - таким образом отвечать на такие вопросы.
Во-вторых, http://www.sysadmins.ru/rtfm/ask_howto.htm
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение alibek » 04.08.2003 (Пн) 8:22

gjghjc, извини :)
Я не в обиду сказал, а в шутку, уж больно ты вопрос бестолково задал :)
Lasciate ogni speranza, voi ch'entrate.

amda
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 134
Зарегистрирован: 11.09.2002 (Ср) 15:14
Откуда: Russia, Волгоградская обл., г. Волжский

Сообщение amda » 22.08.2003 (Пт) 10:16

полностью согласен с gjghjc
а толкового ответа так и не было
я не знаю насколько это правильно, использовать рил тайм ошибку, но я использовал бы такое:

on error goto erro
Open "d:\книга.xls" For Binary Access Write Lock Write As #1
exit sub
erro:
if err.number=70 then
'файл уже открыт
end if

amda
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 134
Зарегистрирован: 11.09.2002 (Ср) 15:14
Откуда: Russia, Волгоградская обл., г. Волжский

Сообщение amda » 22.08.2003 (Пт) 10:21

полностью согласен с gjghjc
а толкового ответа так и не было
я не знаю насколько это правильно, использовать рил тайм ошибку, но я использовал бы такое:

on error goto erro
Open "d:\книга.xls" For Binary Access Write Lock Write As #1
exit sub
erro:
if err.number=70 then
'файл уже открыт
end if


Вернуться в VBA

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

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

    TopList