Logo    
Деловая газета CitCity.ru citforum.ck.ua - все об Open Source Форумы Все публикации Учебный центр Курилка
CitForum    CITForum на CD    Подписка на новости портала Море(!) аналитической информации! :: citforum.ck.ua
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Monday, 14-Jan-2008 09:37:41 EET

Google
WWW citforum.ck.ua
2006 г.

Объекты Excel
Лекция из курса «Основы офисного программирования и документы Excel»

Биллиг Владимир Арнольдович
Интернет-Университет Информационных Технологий, INTUIT.ru

Назад Оглавление Вперёд

Терминальные свойства объекта Workbook

Терминальных свойств, как обычно, множество. Они проще, чем свойства, задаваемые объектами. Среди них достаточно много булевых свойств, позволяющих включать или отключать то или иное свойство рабочей книги. Я приведу сводку некоторых из этих свойств, позволяющую получить общее представление о том, как можно управлять характеристиками рабочей книги Excel с помощью этих свойств.

Таблица 3.6. Терминальные свойства объекта Workbook
Терминальные свойства Назначение свойства
AcceptLabelsInFormula Булево свойство со значением True, если метки могут использоваться в формулах рабочего листа. По умолчанию - True.
HasRoutingSlip Булево свойство со значением True, если книга может быть направлена по сети другим участникам разработки документа.
Routed Булево свойство со значением True, если документ был направлен следующему участнику разработки.
MultiUserEditing Булево свойство со значением True, если книга открыта для разделяемого доступа.
AutoUpdateFrequency Задает частоту (в минутах), с которой сделанные изменения передаются участникам разделяемого доступа. Если свойство имеет значение 0, то книга будет пересылаться только в момент ее сохранения
AutoUpdateSaveChanges Булево свойство со значением True, если сделанные изменения автоматически пересылаются всем участникам разработки. Предыдущий параметр должен иметь значение в пределах от 5 до 1440, чтобы это свойство оказало эффект.
ListChangesOnNewSheet Булево свойство со значением True, если сделанные изменения показываются на отдельной странице при разделенном доступе
KeepChangeHistory Булево свойство со значением True, если при разделенном доступе сохраняется история сделанных изменений.
ChangeHistoryDuration Устанавливает число дней, в течение которых сохраняются изменения в их истории. Старые изменения, срок которых превышает заданную установку, из истории удаляются
CreateBackup Булево свойство со значением True, если при сохранении книги создается ее резервная копия.
CodeName Рабочие книги, листы и другие объекты Excel имеют два имени - собственное и кодовое. В момент создания объекта они совпадают, например "Лист1", но затем каждое из них может быть независимо изменено. Кодовое имя может быть изменено только вручную в окне свойств. Программно оно может быть использовано только для чтения. Важно то, что кодовое имя можно использовать для непосредственного именования объекта, что сокращает цепочку вызовов. Так непосредственно можно обратиться к объекту Лист1.Range(myRange)
FullName Полное имя рабочей книги, заданное в виде строки, включающее путь к файлу, хранящему книгу. Имеет статус "только для чтения".
FileFormat Свойство имеет статус "только для чтения" и возвращает константу, задающую формат файла и/или тип рабочей книги
HasPassword Булево свойство со значением True, если документ имеет пароль защиты
Saved Булево свойство со значением True, если не делалось никаких изменений с момента последнего сохранения документа.
WriteReserved Булево свойство со значением True, если документ закрыт для записи.
Новые терминальные свойства объекта Workbook в Excel 2000
EnvelopeVisible Новое в Excel 2000 терминальное булево свойство, при включении которого появляется панель для отправки электронной почты и заголовок отправляемого сообщения.
VBASigned Новое в Excel 2000 терминальное булево свойство, которое показывает, имеет ли программный проект данной книги цифровую подпись. Свойство имеет статус "только для чтения".

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

Public Sub AllNames()
   'Печать имен документа
   With ThisWorkbook
      Debug.Print "Свойство Name - ", .Name
      Debug.Print "Свойство CodeName - ", .CodeName
      Debug.Print "Свойство FullName - ", .FullName
      Debug.Print "Свойство Path - ", .Path
   End With
End Sub

Вот как выглядят результаты в окне отладки, полученные в результате работы этой процедуры:

Свойство Name -                     BookOne.xls
Свойство CodeName -              ЭтаКнига
Свойство FullName -              E:\O2000\DsCd\Ch11\BookOne.xls
Свойство Path -                  E:\O2000\DsCd\Ch11

Следующая процедура позволяет по желанию пользователя включить или отключить панель для отсылки почтового сообщения, используя новое свойство EnvelopeVisible:

Public Sub EnvelopeOn()
   'Включение и выключение панели и заголовка почтового сообщения
   Dim Answer As Long
   Answer = MsgBox("Включить панель отправки почтового сообщения?", _
      vbYesNo)
   If Answer = vbYes Then
      ThisWorkbook.EnvelopeVisible = True
   Else
      ThisWorkbook.EnvelopeVisible = False
   End If
End Sub 
Методы объекта Workbook

Дадим теперь краткую характеристику основным методам объекта Workbook. Мы уже говорили о том, что создаются и открываются рабочие книги методами коллекции Workbooks - Add, Open и OpenTextFile. А вот закрываются и сохраняются, используя собственные методы. С них мы и начнем описание методов:

  • Save, SaveAs, SaveCopyAs - позволяют сохранить рабочую книгу, без ее закрытия и удаления из коллекции Workbooks. При первом сохранении следует применять метод SaveAs, чтобы задать имя файла, в котором книга сохраняется. Метод имеет и другие параметры - формат хранения, пароль, статус и другие характеристики. Последний из этой группы методов создает копию рабочей книги.
  • Close - выполняет те же функции, что и Save, но одновременно закрывает книгу и удаляет ее из коллекции.
  • Activate - активизирует рабочую книгу.
  • Route - направляет рабочую книгу по сети всем участникам совместной разработки. Список участников и другие характеристики задаются в свойствах объекта RoutingSlip. Вот пример процедуры, в которой определяется круг участников работы, после чего им пересылается текущая книга.
Public Sub BookRoute()
   'Регистрация исполнителей совместной разработки
   'в объекте RoutingSlip.
   'Посылка книги совместно работающим исполнителям.
   With ThisWorkbook
      .HasRoutingSlip = True
      With .RoutingSlip
         .Delivery = xlOneAfterAnother
         .Recipients = Array("Илья Биллиг", _
            "Михаил Дехтярь")
         .Subject = "Collaboration Test"
         .Message = "Это книга Excel, пересылаемая в качестве примера"
         .ReturnWhenDone = True
      End With
      .Route
   End With

End Sub 

Заметьте, для того, чтобы при пересылке книги не задавались лишние вопросы, все исполнители, включенные в список Recipients, также как и сам автор документа, должны быть включены в адресную книгу. Согласно установленному порядку книга будет послана первому исполнителю, указанному в списке, и далее будет пересылаться по заданному списком маршруту. После отсылки книги свойство Routed автоматически будет установлено как True.

  • AcceptAllChanges, RejectAllChanges - принимает или отвергает все изменения, сделанные участниками совместной разработки документа при разделенном доступе.
  • RefreshAll - обновляет сводные таблицы и все области, содержащие внешние данные.
  • PurgeChangeHistoryNow (Days,SharingPassword) - удаляет из истории изменений все те, чей срок хранения превосходит число дней, заданных параметром Days. Второй параметр задает общий пароль.
  • Protect, ProtectSharing, Unprotect, UnprotectSharing - методы, включающие и выключающие пароли личные и общие рабочей книги.
  • ExclusiveAccess - если книга открыта с разделяемым доступом, то этот метод дает пользователю, вызвавшему его, исключительное право доступа - изменения, сделанные всеми остальными пользователями должны сохраняться в отдельных файлах.
  • ChangeFileAccess(Mode, WritePassword, Notify) - изменяет статус доступа. Новый статус задается параметром Mode, который может принимать одно из двух значений: xlReadWrite и xlReadOnly. Если файл снабжен паролем и получает статус для записи и чтения, то второй параметр WritePassword задает пароль на запись. Если булев параметр Notify имеет значение True, то пользователь получает уведомление, когда файл недоступен.
  • AddToFavorites - добавляет в папку Favorites ярлычок рабочей книги.
  • PivotCaches - возвращает коллекцию областей памяти, отводимых сводным таблицам данной рабочей книги. Элементами этой коллекции являются объекты PivotCache. Каждой сводной таблице - объекту PivotTable отводится своя память (кэш), которую и задает объект PivotCache.
  • RunAutoMacros - запускает на выполнение все автомакросы данной книги.
  • LinkSources([Type]), ChangeLink(Name As String, NewName As String, [Type As XlLinkType = xlLinkTypeExcelLinks]), OpenLinks(Name As String, [ReadOnly], [Type]), LinkInfo(Name As String, LinkInfo As XlLinkInfo, [Type], [EditionRef]), UpdateLink([Name], [Type]) - группа методов, позволяющих работать со ссылками. Ссылки могут быть четырех типов:
    • на другие рабочие книги Excel ,
    • на документы, связанные по протоколу OLE (например, документы Word, на которые ссылается рабочая книга) или протоколу DDE,
    • на издателей книги при совместной работе над книгой и ее публикации на сервере,
    • на подписчиков книги, опубликованной на сервере и доступной для подписчиков.
    Метод LinkSources позволяет получить все ссылки типа, заданного его параметром. Если параметр не указан, то будут выданы ссылки на книги Excel. Следующий метод Change позволяет изменить ссылку, Open - открыть документ по заданной ссылке, Info - получить некоторую информацию о документе, Update - обновить ссылки.

Вот пример работы с этой группой методов объекта Workbook:

Public Sub LinkDocs()
   'Установление связей рабочей книги
   Dim BookLinks As Variant
   Dim i As Integer
   With ThisWorkbook
      ' связи с другими книгами Excel.
      BookLinks = .LinkSources(xlExcelLinks)
      If Not IsEmpty(BookLinks) Then
         Debug.Print "Существуют ссылки на рабочие книги Excel!"
         For i = LBound(BookLinks) To UBound(BookLinks)
            Debug.Print "Ссылка" & i & " : ", BookLinks(i)
            If BookLinks(i) = "BookTwo" Then
               .OpenLinks BookLinks(i)
               .ChangeLink BookLinks(i), "BookOne"
            End If
         Next i
      Else: Debug.Print "Ссылки на рабочие книги отсутствуют!"
      End If
      
      BookLinks = .LinkSources(xlOLELinks)
      If Not IsEmpty(BookLinks) Then
         Debug.Print "Существуют ссылки на OLE - документы!"
         For i = LBound(BookLinks) To UBound(BookLinks)
            Debug.Print "Ссылка" & i & " : ", BookLinks(i)
         Next i
         If .LinkInfo("Word.Document.8|E:\O2000\Remarks.doc!'", _
            xlUpdateState, xlOLELinks) = 1 Then
            Debug.Print "Автоматическое обновление данных с OLE - документами!"
         End If
      Else: Debug.Print "Ссылки на OLE - документы отсутствуют!"
      End If
      
      BookLinks = .LinkSources(xlPublishers)
      If Not IsEmpty(BookLinks) Then
         Debug.Print "Существуют ссылки на издателей документа!"
         For i = LBound(BookLinks) To UBound(BookLinks)
            Debug.Print "Ссылка" & i & " : ", BookLinks(i)
         Next i
      Else: Debug.Print "Ссылки на издателей отсутствуют!"
      End If
      
      BookLinks = .LinkSources(xlSubscribers)
      If Not IsEmpty(BookLinks) Then
         Debug.Print "Существуют ссылки на подписчиков документа!"
         For i = LBound(BookLinks) To UBound(BookLinks)
            Debug.Print "Ссылка" & i & " : ", BookLinks(i)
         Next i
      Else: Debug.Print "Ссылки на подписчиков отсутствуют!"
      End If
   End With
End Sub

Вот как выглядят результаты отладочной печати, полученные при работе этой процедуры:

Существуют ссылки на рабочие книги Excel!
Ссылка1 :        BookTwo
Ссылка2 :        E:\O2000\DsCd\Ch11\BookOne.xls
Существуют ссылки на OLE - документы!
Ссылка1 :        Word.Document.8|E:\O2000\Remarks.doc!'
Автоматическое обновление данных с OLE - документами!
Ссылки на издателей отсутствуют!
Ссылки на подписчиков отсутствуют!
Новые методы объекта  Workbook

У объекта Workbook в Excel 2000 появились два новых метода:

  • Sub ReloadAs(Encoding As MsoEncoding),
  • Sub WebPagePreview().

Оба метода, так или иначе, связаны с общей тенденцией публикации документов Excel в Интернет. Рабочие книги, публикуемые в Интернет и интранет, хранятся, естественно в формате HTML. При их чтении могут возникнуть проблемы с кодировкой. Метод ReloadAs(Encoding As MsoEncoding) позволяет перезагрузить книгу в формате HTML, используя нужную кодировку, заданную параметром метода, значением которого может быть, например, константа msoEncodingCyrillic. Метод WebPagePreview позволяет перед публикацией книги отобразить ее на дисплее в том виде, как будет выглядеть соответствующая Web-страница, открываемая в интернет для работы с рабочей книгой.

Методы объекта Workbook предназначены, как можно видеть, для выполнения общих операций над документом и по существу не определяют специфических для Excel действий. Чтобы познакомиться со спецификой, следует пойти вглубь иерархии объектов.

События объекта Workbook

Со всеми событиями, которые может обрабатывать объект Workbook, мы уже знакомы. Всего таких событий 20, из них 9 событий связаны непосредственно с самим объектом Workbook, 8 - возникают на страницах рабочей книги и связаны также с объектом Sheet, три события связаны с объектом Window. Я напомню, что при возникновении события сообщение о нем операционная система посылает, как правило, нескольким объектам. Все они, каждый по-своему, могут обрабатывать это событие. Подробно обо всем этом рассказано при рассмотрении событий объекта Application.

Назад Оглавление Вперёд

 

\

Подписка на новости IT-портала citforum.ck.ua
(библиотека, citforum.ck.ua, CitCity)

Новые публикации:

10 января

citforum.ck.ua:

Дискуссионный клуб:



IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей Пресс-релизы -
Послать комментарий
Информация для авторов
Rambler's Top100 This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2007 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...