- •Глава 1. Макросы Запуск макроса с поиском ячейки
- •Запуск макроса при открытии книги
- •Запуск макроса при вводе в ячейку «2»
- •Запуск макроса при нажатии «Ентер»
- •Добавить в панель свою вкладку «Надстройки» (Формат ячейки)
- •Поиск нужного файла_2
- •Поиск нужного файла_3
- •Глава 2. Работа с файлами (т.Е.Обмен данными с тхт, rtf, xls и т.Д.) Проверка наличия файла по указанному пути_1
- •Проверка наличия файла по указанному пути_2
- •Проверка наличия файла по указанному пути_3
- •Поиск нужного файла_1
- •Обработка нескольких текстовых файлов
- •Экспорт данных в txt
- •Экспорт данных в html
- •Импорт данных, для которых нужно более 256 столбцов
- •Создание резервных копий ценных файлов
- •Подсчет количества открытий файла
- •Вывод пути к файлу в активную ячейку
- •Копирование содержимого файла rtf в эксель
- •Копирование данных из закрытой книги
- •Извлечение данных из закрытого файла
- •Поиск слова в файлах
- •Создание текстового файла и ввод текста в файл
- •Создание текстового файла и ввод текста (определение конца файла)
- •Создание документов Word на основе таблицы Excel
- •Посмотреть все файлы в каталоге_3
- •Быстрое размножение рабочей книги
- •Сортировка листов
- •Поиск максимального значения на всех листах книги
- •Рабочий лист Проверка наличия защиты рабочего листа
- •Список отсортированных листов
- •Создать новый лист_1
- •Создать новый лист_2
- •Удаление листов в зависимости от даты
- •Существует ли лист_2
- •Вывод количества листов в активной книге
- •Вывод количества листов в активной книге в виде гиперссылок
- •Подсчет количества ячеек, содержащих указанные значения_1
- •Подсчет количества ячеек в диапазоне, содержащих указанные значения_2
- •Подсчет количества видимых ячеек в диапазоне
- •Определение количества ячеек в диапазоне и суммы их значений
- •Подсчет количества ячеек
- •Автоматический пересчет данных таблицы при изменении ее значений
- •Ввод данных в ячейки
- •Ввод данных с использованием формул
- •Последовательный ввод данных
- •Ввод текстоввых данных в ячейки
- •Вывод в ячейки названия книги, листа и количества листов
- •Удаление пустых строк_1
- •Удаление пустых строк_2
- •Удаление пустых строк_3
- •Удаление строки по условию
- •Выделение ячеек через интервал_2
- •Выделение нескольких диапазонов
- •Движение по ячейкам
- •Поиск ближайшей пустой ячейки столбца
- •Поиск максимального значения
- •Поиск и замена по шаблону
- •Поиск значения с отображением результата в отдельном окне
- •Поиск с выделением найденных данных_1
- •Поиск с выделением найденных данных_2
- •Поиск по условию в диапазоне
- •Поиск последней непустой ячейки диапазона
- •Поиск последней непустой ячейки столбца
- •Поиск последней непустой ячейки строки
- •Поиск ячейки синего цвета в диапазоне
- •Поиск отрицательного значения в диапазоне и выделения синим цветом
- •Поиск наличия значения в столбце
- •Поиск совпадений в диапазоне
- •Поиск ячейки в диапазоне_1
- •Поиск ячейки в диапазоне_2
- •Заполнение через интервал(массив)
- •Заполнение указанного диапазона(массив)
- •Заполнение диапазона(массив)
- •Расчет суммы первых значений диапазона
- •Размещение в ячейке электронных часов
- •«Будильник»
- •Оформление верхней и нижней границ диапазона
- •Вывод адреса конца диапазона
- •Получение информации о выделенном диапазоне
- •Деление диапазона на 100
- •Возведение каждой ячейки диапазона в квадрат
- •Суммирование данных только видимых ячеек
- •Сумма ячеек с числовыми значениями
- •При суммировании — курсор внутри диапазона
- •Начисление процентов в зависимости от суммы_1
- •Начисление процентов в зависимости от суммы_2
- •Начисление процентов в зависимости от суммы_3
- •Сводный пример расчета комиссионного вознаграждения
- •Движение по диапазону
- •Объединение данных диапазона
- •Объединение данных диапазона_2
- •Узнать максимальную колонку или строку.
- •Ограничение возможных значений диапазона
- •Тестирование скорости чтения и записи диапазонов
- •Перечень примечаний в отдельном списке_2
- •Перечень примечаний в отдельном списке_3
- •Глава 4. Работа с примечаниями Вывод на экран всех примечаний рабочего листа
- •Функция извлечения комментария
- •Список примечаний защищенных листов
- •Перечень примечаний в отдельном списке_1
- •Подсчет количества примечаний_1
- •Перенос значений из ячейки в комментарий_1
- •Перенос значений из ячейки в комментарий_2
- •Панель с двумя кнопками
- •Создание панели справа
- •Вызов предварительного просмотра
- •Создание пользовательского меню (вариант 1)
- •Создание пользовательского меню (вариант 2)
- •Создание пользовательского меню (вариант 3)
- •Создание пользовательского меню (вариант 4)
- •Создание пользовательского меню (вариант 5)
- •Создание пользовательского меню (вариант 6)
- •Создание списка пунктов главного меню Excel
- •Создание списка пунктов контекстных меню
- •Отображение панели инструментов при определенном условии
- •Скрытие и отображение панелей инструментов
- •Создать подсказку к моим кнопкам
- •Создание меню на основе данных рабочего листа
- •Создание контекстного меню
- •Блокировка контекстного меню
- •Добавление команды в меню Сервис
- •Добавление команды в меню Вид
- •Создание панели со списком
- •Мультфильм с помощником в главной роли
- •Дополнение помощника текстом, заголовком, кнопкой и значком
- •Новые параметры помощника
- •Использование помощника для выбора цвета заливки
- •Глава . Диалоговые окна Функция inputbox (через ввод значения)
- •Вызов предварительного просмотра
- •Настройка ввода данных в диалоговом окне
- •Выбор из текста всех чисел
- •Прописная буква только в начале текста
- •Подсчет количества повторов искомого текста
- •Выделение из текста произвольного элемента
- •Отображение текста «задом наперед»
- •Англоязычный текст — заглавными буквами
- •Запуск таблицы символов из Excel
- •Глава информация о пользователе, компьютере, принтере и т.Д. Получить имя пользователя
- •Вывод разрешения монитора
- •Получение информации об используемом принтере
- •Просмотр информации о дисках компьютера
- •Глава . Юзерформы
- •Глава . Диаграммы Построение диаграммы с помощью макроса
- •Сохранение диаграммы в отдельном файле
- •Построение и удаление диаграммы нажатием одной кнопки
- •Вывод списка диаграмм в отдельном окне
- •Применение случайной цветовой палитры
- •Эффект прозрачности диаграммы
- •Построение диаграммы на основе данных нескольких рабочих листов
- •Создание подписей к данным диаграммы
- •ГлаВа . Разные программы. Программа для составления кроссвордов
- •Создать обложку dvd
- •Игра «Минное поле»
- •Игра «Угадай животное»
- •Расчет на основании ячеек определенного цвета
- •Глава .Другие функции и макросы Вызов функциональных клавиш
- •Расчет среднего арифметического значения
- •Перевод чисел в «деньги»
- •Поиск ближайшего понедельника
- •Подсчет количества полных лет
- •Расчет средневзвешенного значения
- •Преобразование номера месяца в его название
- •Использование относительных ссылок
- •Преобразование таблицы Excel в html-формат
- •Генератор случайных чисел
- •Случайные числа — на основании диапазона
- •Создание бегущей картинки
- •Вращающиеся автофигуры
- •Вызов таблицы цветов
- •Создание калькулятора
- •Склонение фамилии, имени и отчества
- •Глава . Дата и время Вывод даты и времени_1
- •Вывод даты и времени_2
- •Получение системной даты
- •Извлечение даты и часов
- •Функция ДатаПолная
Глава 2. Работа с файлами (т.Е.Обмен данными с тхт, rtf, xls и т.Д.) Проверка наличия файла по указанному пути_1
Sub VerifyFileLocation()
Dim strFileName As String
Dim strFileTitle As String
' Имя и путь искомого файла
strFileTitle = "primer.xls"
strFileName = "C:\Документы\primer.xls"
' Проверка наличия файла (функция Dir возвращает пустую _
строку, если по указанному пути файл обнаружить не удалось)
If Dir(strFileName) <> "" Then
MsgBox "Файл " & strFileTitle & " найден"
Else
MsgBox "Файл " & strFileTitle & " не найден"
End If
End Sub
Проверка наличия файла по указанному пути_2
Sub VerifyFileLocation1()
Dim strFileName As String
' Имя искомого файла
strFileName = "C:\Документы\primer.xls"
' Проверка наличия файла (функция Dir возвращает пустую _
строку, если по указанному пути файл обнаружить не удалось)
If Dir(strFileName) <> "" Then
MsgBox "Файл " & strFileName & " найден"
Else
MsgBox "Файл " & strFileName & " не найден"
End If
End Sub
Проверка наличия файла по указанному пути_3
Sub Check_Disk()
On Error Resume Next
If Dir("\\192.168.1.200\c\", vbSystem) <> "" Then
If Err = 52 Then
Err.Clear
MsgBox "Диска нет!", 48, "Ошибка"
Exit Sub
End If
If Err <> 0 Then
MsgBox "Произошло ошибка!", 48, "Ошибка"
Exit Sub
Else
On Error GoTo 0
MsgBox "Диск есть!", 64, ""
End If
End If
End Sub
Поиск нужного файла_1
Sub FileSearch()
Dim strFileName As String
Dim strFolder As String
Dim strFullPath As String
' Задание имени папки для поиска
strFolder = InputBox("Определите папку:")
If strFolder = "" Then Exit Sub
' Задание имени файла для поиска
strFileName = Application.InputBox("Введите имя файла:")
If strFileName = "" Then Exit Sub
' При необходимости дополняем имя папки "\"
If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\"
' Полный путь файла
strFullPath = strFolder & strFileName
' Вывод окна с отчетом о поиске средствами VBA
MsgBox "Использование команды VBA..." & vbCrLf & vbCrLf & _
dhSearchVBA(strFullPath), vbInformation, strFullPath
' Вывод окна с отчетом о поиске средствами объекта FileSearch
MsgBox "Использование объекта FileSearch..." & vbCrLf & _
vbCrLf & dhSearchFileSearch(strFolder, strFileName), vbInformation, _
strFullPath
' Вывод окна с отчетом о поиске средствами объекта _
FileSystemObject
MsgBox "Использование объекта FileSystemObject..." & vbCrLf & _
vbCrLf & dhSearchFileSystemObject(strFullPath), vbInformation, _
strFullPath
End Sub
Поиск нужного файла_2
Function dhSearchVBA(varFullPath As Variant) As Boolean
' Использование команды VBA
dhSearchVBA = Dir(varFullPath) <> ""
End Function
Поиск нужного файла_3
Function dhSearchFileSearch(varFolder As Variant, varFileName _
As Variant) As Boolean
' Использование объекта FileSearch
With Application.FileSearch
' Создание нового поиска
.NewSearch
' Имя для поиска
.FileName = varFileName
' Папка поиска
.LookIn = varFolder
' Собственно поиск
.Execute
dhSearchFileSearch = .FoundFiles.Count <> 0
End With
End Function
Поиск нужного файла_4
Function dhSearchFileSystemObject(varFullPath As Variant) As Boolean
Dim objFSObject As Object
' Использование объекта FileSystemObject
Set objFSObject = CreateObject("Scripting.FileSystemObject")
dhSearchFileSystemObject = objFSObject.FileExists(varFullPath)
End Function
Автоматизация удаления файлов
Листинг 3.51. Удаление файла
Sub DeleteFile()
Kill "C:\Документы\primer.xls"
End Sub
Листинг 3.52. Удаление группы файлов
Sub DeleteFiles()
' Удаление всех файлов с расширением XLS из заданной папки
Kill "C:\Документы" & "*.xls"
End Sub
Произвольный текст в строке состояния
Sub ChangeStatusBarText()
Application.StatusBar = "Как надоело работать!!!"
End Sub
Восстановление строки состояния
Sub ReturnStatusBarText()
Application.StatusBar = False
End Sub
Бегущая строка в строке состояния
Sub MovingTextInStatusBar()
Dim intSpaces As Integer
' Изменение количества пробелов в начале строки (от 20 до 0) - _
строка бежит (скорее, ползет) влево
For intSpaces = 20 To 0 Step -1
' Запись текста в строку состояния
Application.StatusBar = Space(intSpaces) & "Как надоело работать!!!"
' Выдерживаем паузу
Application.Wait Now + TimeValue("00:00:01")
' Дадим Excel обработать пользовательский ввод
DoEvents
Next
Application.StatusBar = False
End Sub
Быстрое изменение заголовка окна
Sub NewTitle()
Application.Caption = "Какая хорошая погода"
End Sub
Быстрое изменение заголовка окна_2
Sub NewTitle()
Application.Caption = "Какая хорошая погода"
ActiveWindow.Caption = "А завтра будет дождь"
End Sub
Изменение заголовка окна (со скрытием названия файла)
Sub NewTitle()
Application.Caption = "Какая хорошая погода"
ActiveWindow.Caption = ""
End Sub
Возврат к первоначальному заголовку
Sub ReturnTitle()
' Возвращение заголовка приложения (то есть Excel)
Application.Caption = Empty
' Указание правильного названия открытого файла (книги)
ActiveWindow.Caption = ThisWorkbook.Name
End Sub
Что открыто в данный момент
Sub WorkBooksList()
Dim book As Object
' Вывод имени каждой рабочей книги
For Each book In Workbooks
MsgBox (book.Name)
Next
End Sub
Работа с текстовыми файлами
Открываются файлы командой Open, а закрываются - командой Close.
Sub Test()
Open "file.txt" For Input As #1
Close #1
End Sub
Запись и чтение текстового файла
Sub Test()
Open "file.txt" For Output As #1
Print #1, "Этот текст будет записан в файл"
Close #1
Open "file.txt" For Input As #1
Dim s As String
Input #1, s
MsgBox s
Close #1
End Sub
Для записи используется оператор Print, а для чтения - Input. У этих операторов есть свои особенности.
Print #1, "Hello , File"
Оператор Input #1 прочитает только Hello и все. Запятая воспринимается как разделитеть. Чтобы прочитать строку целиком, используется оператор Line Input.
Sub Test()
Open "file.txt" For Output As #1
Print #1, "Hello , File"
Close #1
Open "file.txt" For Input As #1
Dim s As String
Line Input #1, s
MsgBox s
Close #1
End Sub
