Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual Basic
Перезагрузить страницу Как проверить, открыта ли книга?
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
iusovich iusovich вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.03.2006
По умолчанию Как проверить, открыта ли книга? - 12.05.2006, 18:55

Чувствую, что сделать легко, но как?
Нужно из одной книги Excel перегонять данные в другую. Для этого хочу проверить, открыта ли книга с источником данных. Типа если открыта - перебрасывай данные, если не открыта - сообщи об ошибке.

Подскажите, кто сталкивался, как.
Ответить с цитированием
  (#2 (permalink)) Старый
iusovich iusovich вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.03.2006
По умолчанию Как проверить, открыта ли книга? - 12.05.2006, 18:55

Чувствую, что сделать легко, но как?
Нужно из одной книги Excel перегонять данные в другую. Для этого хочу проверить, открыта ли книга с источником данных. Типа если открыта - перебрасывай данные, если не открыта - сообщи об ошибке.

Подскажите, кто сталкивался, как.
Ответить с цитированием
  (#3 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 12.05.2006, 19:55

Существует довольно много способов определить открыта или нет рабочая книга, но условно их можно разделить на два типа: первый, это банальный перебор в цикле всех открытых рабочих книг и сравнения с образцом, второй, так или иначе связан с генерацией ошибки вследствии отсутствия оной книги и "перехвата" этой ошибки. Если честно, то мне больше импонирует именно первый тип определения, например :

Код:
Option Compare Text

Private Function OpenWorkbook(iName$) As Boolean
    Dim iBook As Workbook
    For Each iBook In Workbooks
        If iBook.Name = iName$ Then
           OpenWorkbook = True
           Exit Function
        End If
    Next
    OpenWorkbook = False
End Function

Private Sub Test()
    MsgBox OpenWorkbook("КнигаX.xls")
End Sub
Однако, если необходимо активировать рабочую книгу, то можно использовать второй тип, например :

Код:
Private Sub Test()
On Error GoTo ErrHandler
    Workbooks("КнигаX7.xls").Activate
    Exit Sub
    
ErrHandler:
    MsgBox "Рабочая книга закрыта", , ""
    'If Err.Number = 9 Then _
       MsgBox "Рабочая книга закрыта", , ""
End Sub
Ответить с цитированием
  (#4 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 12.05.2006, 19:55

Существует довольно много способов определить открыта или нет рабочая книга, но условно их можно разделить на два типа: первый, это банальный перебор в цикле всех открытых рабочих книг и сравнения с образцом, второй, так или иначе связан с генерацией ошибки вследствии отсутствия оной книги и "перехвата" этой ошибки. Если честно, то мне больше импонирует именно первый тип определения, например :

Код:
Option Compare Text

Private Function OpenWorkbook(iName$) As Boolean
    Dim iBook As Workbook
    For Each iBook In Workbooks
        If iBook.Name = iName$ Then
           OpenWorkbook = True
           Exit Function
        End If
    Next
    OpenWorkbook = False
End Function

Private Sub Test()
    MsgBox OpenWorkbook("КнигаX.xls")
End Sub
Однако, если необходимо активировать рабочую книгу, то можно использовать второй тип, например :

Код:
Private Sub Test()
On Error GoTo ErrHandler
    Workbooks("КнигаX7.xls").Activate
    Exit Sub
    
ErrHandler:
    MsgBox "Рабочая книга закрыта", , ""
    'If Err.Number = 9 Then _
       MsgBox "Рабочая книга закрыта", , ""
End Sub
Ответить с цитированием
  (#5 (permalink)) Старый
iusovich iusovich вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.03.2006
По умолчанию 15.05.2006, 10:24

Спасибо! Всё работает.
Вы мне уже второй раз помогаете. Первый был с названиями рядов при построении диаграммы. Там проблема была с тем, что ряды, по которым пытался строить, пустые были. Теперь тот пример во всю фин. отдел юзает, спасибо! И за этот пример тоже!
Ответить с цитированием
Ads.
Ads
  (#6 (permalink)) Старый
iusovich iusovich вне форума
Member
 
Сообщений: 38
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.03.2006
По умолчанию 15.05.2006, 10:24

Спасибо! Всё работает.
Вы мне уже второй раз помогаете. Первый был с названиями рядов при построении диаграммы. Там проблема была с тем, что ряды, по которым пытался строить, пустые были. Теперь тот пример во всю фин. отдел юзает, спасибо! И за этот пример тоже!
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Электронная книга. Kingston Вопросы начинающих программистов 1 09.03.2012 01:23
Электронная книга lipton Любые вопросы от новичков 16 30.12.2011 21:00
Книга Иван1 Железо. Написание драйверов 4 29.07.2011 17:31
Открыта тайна информации tapos_nik Общетематический 0 05.11.2009 09:29
Открыта вакансия для студентов и выпускников! mirra Работа 0 06.06.2008 14:50
Бета-версия Vista SP1 открыта для широкой публики Shunix Новости 0 21.01.2008 23:46
ASP.NET: гостевая книга Drey^the^first .NET 0 22.01.2007 11:57
Как проверить, открыта ли книга?- В другом экземпляре Excel! rtttv Visual Basic 5 24.08.2006 13:37
Електронная книга HELP!!!! Madrid Офтопик 2 15.02.2006 10:01
Открыта вакансия контент менеджера. -HR- Marianne Работа 1 01.11.2005 19:31
Открыта вакансия Artmax Работа 0 04.06.2005 02:36
Открыта вакансия на должность C++ разработчик Kim Работа 0 30.01.2005 23:02



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов