- •Программирование в excel
- •Симферополь 2000
- •Факультет "Механизация сельского хозяйства" Программирование в excel
- •1. Основы программирования на vba
- •1.1. Создание, редактирование и запись программ
- •1.1.1. Запись макроса
- •1.1.2. Как найти макрос в проекте
- •1.1.3. Написание новой процедуры
- •Чем макрос отличается от процедуры
- •1.1.4. Процедуры типа Sub и Function
- •1.1.5. Закрытые и открытые процедуры
- •1.1.6. Использование значения, возвращаемого функцией
- •1.1.7. Выполнение процедуры Sub
- •1.1.8. Передача аргументов в процедуру
- •1.1.9. Именованные аргументы
- •1.1.10. Написание процедур для обработки событий
- •1.1.11. Где хранится код обработки события
- •1.1.12. Средства, ускоряющие написание программ
- •1.1.13. Как написать легкочитаемую программу
- •1.2. Переменные, константы и типы данных
- •1.2.1. Типы данных в Visual Basic
- •1.2.2. Объявление константы, переменной или массива
- •1.2.3. Объявление объектной переменной
- •1.2.4. Встроенные константы
- •1.3. Управляющие конструкции
- •1.3.1. Операторы ветвления
- •1.3.2. Операторы циклов
- •1.3.3. Вложение управляющих конструкций
- •1.3.4. Выход из циклов и процедур
- •1.4. Структура программы
- •2. Сортировка данных
- •2.1. Алгоритм сортировки обменами (алгоритм “пузырька”)
- •2.2. Алгоритм сортировки вставками
- •2.3. Алгоритм сортировки выбором элемента
- •2.4. Алгоритм быстрой сортировки (метод Хоора)
- •2.5. Алгоритм пирамиды (метод Уильямса-Флойда)
- •2.6. Учебные задачи по программированию сортировки данных
- •3. Работа vba с объектами Excel
- •3.1. Как получить справку по Visual Basic для Microsoft Excel
- •3.2. Объекты Microsoft Excel
- •3.3. Работа с объектом Application
- •3.4. Работа с объектом Workbook
- •3.4.1. Открытие рабочей книги
- •3.4.2. Закрытие рабочей книги
- •3.4.3. Создание и сохранение рабочей книги
- •3.5. Работа с объектом Range
- •3.6. Строковые ссылки в стиле а1 или имена диапазонов
- •3.6.1. Числовые индексы строк и колонок
- •3.6.2. Свойство Offset
- •3.6.3. Свойства CurrentRegion и UsedRange
- •3.6.4. Организация циклов для перебора ячеек диапазона
- •3.6.5. Применение свойства Address для отладки кода, работающего с объектом Range
- •3.7. Работа с событиями
- •3.7.1. Включение и отключение обработки событий
- •3.7.2. Использование событий, связанных с рабочими листами
- •3.7.3. События на уровне рабочего листа
- •3.7.4. События на уровне диаграммы
- •3.7.5. События на уровне рабочей книги
- •3.7.6. События на уровне приложения
- •3.7.7. Модули классов и события
- •4. Численные методы математики
- •4.1. Методы решения нелинейных уравнений
- •4.1.2. Метод деления отрезка пополам (метод дихотомии).
- •4.1.3. Метод Ньютона (касательных).
- •4.1.4. Метод хорд (секущих).
- •4.1.5. Метод итераций (метод последовательных приближений).
- •4.2.1. Теоретические сведения
- •4.2.2. Метод Крамера
- •4.2.3. Метод Гаусса
- •4.2.6. Метод Зейделя
- •4.3. Обработка экспериментальных данных
- •4.3.1. Задачи, которые возникают при обработке экспериментальных данных.
- •4.3.2. Интерполяция
- •4.3.2.1. Интерполяция функций
- •4.3.3.2. Определение параметров эмпирической формулы
- •4.4. Методы численного интегрирования
- •4.4.1. Метод трапеций
- •4.4.2. Метод Симпсона
- •4.4.3. Оценка точности формул численного интегрирования. Выбор шага интегриров-ания
- •4.4.3.1. Выбор шага интегрирования по оценке остаточного члена (ошибки)
- •4.4.3.2. Выбор шага интегрирования с помощью двойного пересчета
- •4.5.1. Теоретические сведения
- •4.5.2. Одноступенчатые методы
- •4.5.2.1. Решение с помощью рядов Тейлора
- •4.5.2.2 Метод Эйлера
- •4.5.2.3. Модифицированный метод Эйлера
- •4.5.2.4. Метод Эйлера-Коши
- •4.5.2.5 Метод Рунге-Кутта
- •4.5.3. Многоступенчатые методы
- •4.5.3.1. Методы прогноза и коррекции
- •4.6. Методы решения линейной краевой задачи для обыкновенных дифференциальных уравнений
- •4.6.1. Постановка задачи
- •4.6.2. Метод конечных разностей
- •4.6.3. Метод прогонки
- •4.6.4. Алгоритм решения краевой задачи методом прогонки.
3.3. Работа с объектом Application
Большинство свойств объекта Application Microsoft Excel управляет внешним видом окна Microsoft Excel или глобальными аспектами поведения этого приложения. Например, если видима строка формул, значение свойства DisplayFormulaBar равно True, а если отключено обновление экрана, значение свойства ScreenUpdating равно False.
Кроме того, свойства объекта Application обеспечивают доступ к “нижестоящим” объектам в иерархии, например, к набору Windows (представляющие все открытые в данный момент окна) или набору Workbooks (представляющему все открытые в данный момент рабочие книги). Такие свойства, иногда называемые аксессорами, позволяют проходить по иерархии объектов от вершины (Application) до объектов более низких уровней (Workbook, Worksheet, Range и т.д.).
Некоторые свойства и методы, применимые к объекту Application, применимы и к объектам, расположенным на более низких уровнях иерархии. Использование подобных свойств или методов на уровне Application обычно приводит к изменению всех открытых рабочих книг или листов. Например, метод Calculate применим к объектам Application, Workbook и Worksheet. Выражение Application. Calculate вызывает пересчет данных на всех рабочих листах во всех открытых книгах, а применение этого метода к объектам Workbook или Worksheet позволяет соответственно сузить масштабы пересчета.
3.4. Работа с объектом Workbook
Открывая или сохраняя файл в Microsoft Excel, Вы фактически открываете или сохраняете рабочую книгу. Поэтому для работы с файлами в Visual Basic используются методы объекта Workbook или набора Workbooks.
3.4.1. Открытие рабочей книги
Рабочая книга открывается методом 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 не найдет файл.
Чтобы открыть книгу, хранящуюся в папке, где расположен исполняемый файл, можно использовать свойство Path — оно возвращает строку, определяющую путь к данной папке. Свойство PathSeparator возвращает символ-разделитель, корректный в данной файловой системе, например, обратную косую черту (\) для FAT MS-DOS® и Windows®. В следующем примере показан независимый от файловой системы код, с помощью которого можно открывать 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
Вместо того, чтобы жестко зашивать в программу имя файла, передаваемое методу 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