Работа с объектом Application Работа с объектом Workbook Работа с объектом Range Строковые ссылки в стиле А1 или имена диапазонов Работа с событиями. Как получить справку по Visual Basic для Microsoft Excel Объекты Microsoft Excel
Работа с объектом Application
Большинство свойств объектаApplication Microsoft Excel управляет внешним видом окна Microsoft Excel или глобальными аспектами поведения этого приложения. Например, если видима строка формул, значение свойстваDisplayFormulaBar равноTrue, а если отключено обновление экрана, значение свойстваScreenUpdating равноFalse.
Кроме того, свойства объектаApplication обеспечивают доступ к ?нижестоящим? объектам в иерархии, например, к наборуWindows (представляющие все открытые в данный момент окна) или наборуWorkbooks (представляющему все открытые в данный момент рабочие книги). Такие свойства, иногда называемые аксессорами, позволяют проходить по иерархии объектов от вершины(Application) до объектов более низких уровней(Workbook, Worksheet,Range и т.д.). Подробнее о модели объектов см. главу 2 ?Введение в модели объектов?.
Некоторые свойства и методы, применимые к объекту Application, применимы и к объектам, расположенным на более низких уровнях иерархии. Использование подобных свойств или методов на уровне Application обычно приводит к изменению всех открытых рабочих книг или листов. Например, метод Calculate применим к объектам Application, Workbook и Worksheet. Выражение Application. Calculate вызывает пересчет данных на всех рабочих листах во всех открытых книгах, а применение этого метода к объектам Workbook или Worksheet позволяет соответственно сузить масштабы пересчета.
Работа с объектом Workbook
Открытие рабочей книги Создание и сохранение рабочей книги Закрытие рабочей книги
Открывая или сохраняя файл в Microsoft Excel, Вы фактически открываете или сохраняете рабочую книгу. Поэтому для работы с файлами в Visual Basic используются методы объектаWorkbook или набораWorkbooks.
Открытие рабочей книги
Рабочая книга открывается методомOpen. Он всегда применяется для набора Workbooks, ссылку на который можно получить через свойствоWorkbooks.Вот как выглядит код, открывающий файл Bookl.xls (в текущем каталоге) и показывающий значение из ячейки А1 на первом листе данной книги:
Sub OpenBook1() Set myBook = Workbooks.Open(Filename:="BOOK1.XLS") MsgBox myBook.Worksheets (1) .Range("A1") .Value End Sub
Заметьте, что методOpen возвращает объектWorkbook, соответствующий только что открытой книге.
Имя файла в этом примере не содержит пути, и таким образом подразумевается, что файл расположен в текущей папке. Это обязательно даст ошибку в период выполнения ? как только пользователь сменит текущую папку, Visual Basic не найдет файл.
Есть два сравнительно безопасных места хранения рабочих книг, которые Вы собираетесь открывать программно. Первое ? папка, где хранится исполняемый файл Microsoft Excel. Второе ? папка Library, создаваемая при установке автоматически; она находится на один уровень ниже той, где хранится исполняемый файл Microsoft Excel.
Чтобы открыть книгу, хранящуюся в папке, где расположен исполняемый файл, можно использовать свойствоPath ? оно возвращает строку, определяющую путь к данной папке. СвойствоPathSeparator возвращает символ-разделитель, корректный в данной файловой системе, например, обратную косую черту (\) для FAT MS-DOS╝ и Windows╝ или точку с запятой (;) для Macintosh╝. В следующем примере показан независимый от файловой системы код, с помощью которого можно открывать Bookl.xls, исходя из предположения, что этот файл хранится в той же папке, что и исполняемый файл.
Sub OpenBook1() EXEPath = Application.Path & Application.PathSeparator fName = EXEPath & "BOOK-1.XLS" Set myBook = Workbooks.Open(Filename:=fName) MsgBox myBook.Worksheets (1).Range ("А1").Value End Sub
Другое сравнительно безопасное место хранения рабочей книги ? папка Library. Чтобы получить строку с путем к этой папке, используйте вместо свойстваPath свойствоLibraryPath. Вот как можно применить свойство LibraryPath:
Sub OpenBook1() LibPath = Application.LibraryPath & Application.PathSeparator fName = LibPath & "BOOK1.XLS" Set myBook = Workbooks.Open(Filename:=fName) MsgBox myBook.Worksheets (1) .Range ("А1").Value End Sub
Вместо того, чтобы жестко зашивать в программу имя файла, передаваемое методуOpen, лучше предоставить пользователю возможность выбора нужного файла. МетодGetOpenFilename выводит на экран стандартное диалоговое окноOpen (Открытие файла), но в итоге данный метод не открывает файл, а возвращает строку, которая содержит полный путь и имя выбранного файла. Вот пример использования методаGetOpenFilename, в котором программа сообщает имя выбранного файла и открывает этот файл:
Sub DemoGetOpenFilename() Do fName = Application .GetOpenFilename Loop Until fName <> False MsgBox "Opening " & fName Set myBook = Workbooks.Open(Filename:=fName) End Sub