
- •Глава 1. Макросы Запуск макроса с поиском ячейки
- •Запуск макроса при открытии книги
- •Запуск макроса при вводе в ячейку «2»
- •Запуск макроса при нажатии «Ентер»
- •Добавить в панель свою вкладку «Надстройки» (Формат ячейки)
- •Глава 2. Работа с файлами (т.Е.Обмен данными с тхт, rtf, xls и т.Д.) Проверка наличия файла по указанному пути_1
- •Проверка наличия файла по указанному пути_2
- •Проверка наличия файла по указанному пути_3
- •Поиск нужного файла_1
- •Поиск нужного файла_2
- •Поиск нужного файла_3
- •Обработка нескольких текстовых файлов
- •Экспорт данных в 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
- •Узнать максимальную колонку или строку.
- •Ограничение возможных значений диапазона
- •Тестирование скорости чтения и записи диапазонов
- •Глава 4. Работа с примечаниями Вывод на экран всех примечаний рабочего листа
- •Функция извлечения комментария
- •Список примечаний защищенных листов
- •Перечень примечаний в отдельном списке_1
- •Перечень примечаний в отдельном списке_2
- •Перечень примечаний в отдельном списке_3
- •Подсчет количества примечаний_1
- •Перенос значений из ячейки в комментарий_1
- •Перенос значений из ячейки в комментарий_2
- •Панель с двумя кнопками
- •Создание панели справа
- •Вызов предварительного просмотра
- •Создание пользовательского меню (вариант 1)
- •Создание пользовательского меню (вариант 2)
- •Создание пользовательского меню (вариант 3)
- •Создание пользовательского меню (вариант 4)
- •Создание пользовательского меню (вариант 5)
- •Создание пользовательского меню (вариант 6)
- •Создание списка пунктов главного меню Excel
- •Создание списка пунктов контекстных меню
- •Отображение панели инструментов при определенном условии
- •Скрытие и отображение панелей инструментов
- •Создать подсказку к моим кнопкам
- •Создание меню на основе данных рабочего листа
- •Создание контекстного меню
- •Блокировка контекстного меню
- •Добавление команды в меню Сервис
- •Добавление команды в меню Вид
- •Создание панели со списком
- •Мультфильм с помощником в главной роли
- •Дополнение помощника текстом, заголовком, кнопкой и значком
- •Новые параметры помощника
- •Использование помощника для выбора цвета заливки
- •Глава . Диалоговые окна Функция inputbox (через ввод значения)
- •Вызов предварительного просмотра
- •Настройка ввода данных в диалоговом окне
- •Выбор из текста всех чисел
- •Прописная буква только в начале текста
- •Подсчет количества повторов искомого текста
- •Выделение из текста произвольного элемента
- •Отображение текста «задом наперед»
- •Англоязычный текст — заглавными буквами
- •Запуск таблицы символов из Excel
- •Глава информация о пользователе, компьютере, принтере и т.Д. Получить имя пользователя
- •Вывод разрешения монитора
- •Получение информации об используемом принтере
- •Просмотр информации о дисках компьютера
- •Глава . Юзерформы
- •Глава . Диаграммы Построение диаграммы с помощью макроса
- •Сохранение диаграммы в отдельном файле
- •Построение и удаление диаграммы нажатием одной кнопки
- •Вывод списка диаграмм в отдельном окне
- •Применение случайной цветовой палитры
- •Эффект прозрачности диаграммы
- •Построение диаграммы на основе данных нескольких рабочих листов
- •Создание подписей к данным диаграммы
- •ГлаВа . Разные программы. Программа для составления кроссвордов
- •Создать обложку dvd
- •Игра «Минное поле»
- •Игра «Угадай животное»
- •Расчет на основании ячеек определенного цвета
- •Глава .Другие функции и макросы Вызов функциональных клавиш
- •Расчет среднего арифметического значения
- •Перевод чисел в «деньги»
- •Поиск ближайшего понедельника
- •Подсчет количества полных лет
- •Расчет средневзвешенного значения
- •Преобразование номера месяца в его название
- •Использование относительных ссылок
- •Преобразование таблицы Excel в html-формат
- •Генератор случайных чисел
- •Случайные числа — на основании диапазона
- •Создание бегущей картинки
- •Вращающиеся автофигуры
- •Вызов таблицы цветов
- •Создание калькулятора
- •Склонение фамилии, имени и отчества
- •Глава . Дата и время Вывод даты и времени_1
- •Вывод даты и времени_2
- •Получение системной даты
- •Извлечение даты и часов
- •Функция ДатаПолная
Создание текстового файла и ввод текста в файл
Sub Test()
Open "c:\2.txt" For Output As #1
Print #1, "Hello File"
Close #1
Open "c:\1.txt" For Input As #1
Dim s As String
Input #1, s
MsgBox s
Close #1
End Sub
Создание текстового файла и ввод текста (определение конца файла)
Sub Test()
Open "c:\1.txt" For Output As #1
Print #1, "Hello , File"
Close #1
Open "c:\1.txt" For Input As #1
Dim s As String
While Not EOF(1)
Input #1, s
MsgBox s
Wend
Close #1
End Sub
Создание документов Word на основе таблицы Excel
Sub ReportToWord()
Dim intReportCount As Integer ' Количество сообщений
Dim strForWho As String ' Получатель сообщения
Dim strSum As String ' Сумма за товар
Dim strProduct As String ' Название товара
Dim strOutFileName As String ' Имя файла для сохранения сообщения
Dim strMessage As String ' Текст дополнительного сообщения
Dim rgData As Range ' Обрабатываемые ячейки
Dim objWord As Object
Dim i As Integer
' Создание объекта Word
Set objWord = CreateObject("Word.Application")
' Информация с рабочего листа
Set rgData = Range("A1")
strMessage = Range("E6")
' Просмотр записей на листе Лист1
intReportCount = Application.CountA(Range("A:A"))
For i = 1 To intReportCount
' Динамические сообщения в строке состояния
Application.StatusBar = "Создание сообщения " & i
' Назначение данных переменным
strForWho = rgData.Cells(i, 1).Value
strProduct = rgData.Cells(i, 2).Value
strSum = Format(rgData.Cells(i, 3).Value, "#,000")
' Имя файла для сохранения отчета
strOutFileName = ThisWorkbook.path & "\" & strForWho & ".doc"
' Передача команд в Word
With objWord
.Documents.Add
With .Selection
' Заголовок сообщения
.Font.Size = 14
.Font.Bold = True
.ParagraphFormat.Alignment = 1
.TypeText Text:="О Т Ч Е Т"
' Дата
.TypeParagraph
.TypeParagraph
.Font.Size = 12
.ParagraphFormat.Alignment = 0
.Font.Bold = False
.TypeText Text:="Дата:" & vbTab & _
Format(Date, "mmmm d, yyyy")
' Получатель сообщения
.TypeParagraph
.TypeText Text:="Кому: менеджеру " & vbTab & strForWho
' Отправитель
.TypeParagraph
.TypeText Text:="От:" & vbTab & Application.UserName
' Сообщение
.TypeParagraph
.TypeParagraph
.TypeText strMessage
.TypeParagraph
.TypeParagraph
' Название товара
.TypeText Text:="Продано товара:" & vbTab & strProduct
.TypeParagraph
' Сумма за товар
.TypeText Text:="На сумму:" & vbTab & _
Format(strSum, "$#,##0")
End With
' Сохранение документа
.ActiveDocument.SaveAs FileName:=strOutFileName
End With
Next i
' Удаление объекта Word
objWord.Quit
Set objWord = Nothing
' Обновление строки состояния
Application.StatusBar = False
' Вывод на экран информационного сообщения
MsgBox intReportCount & " заметки создано и сохранено в папке " _
& ThisWorkbook.path
End Sub
Команды создания и удаления каталогов
Sub Test()
MkDir ("c:\test")
End Sub
И удаляем.
Sub Test()
RmDir ("c:\test")
End Sub
Получение текущего каталога
Sub Test()
MsgBox (CurDir)
End Sub
Смена каталога
Sub Test()
ChDir ("c:\windows")
MsgBox (CurDir)
End Sub
Посмотреть все файлы в каталоге_1
Sub Test()
Dim s As String
s = Dir("c:\windows\inf\*.*")
Debug.Print s
Do While s <> ""
s = Dir
Debug.Print s
Loop
End Sub
Посмотреть все файлы в каталоге_2
' Объявление API-функции для отображения стандартного окна _
просмотра папок
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
' Объявление API-функции для преобразования данных, возвращаемых _
функцией SHBrowseForFolder, в строку
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal _
pszPath As String) As Long
' Структура используется функцией SHBrowseForFolder
Type BROWSEINFO
hwndOwner As Long ' Родительское окно (для диалога)
pidlRoot As Long ' Корневая папка для просмотра
strDisplayName As String
strTitle As String ' Заголовок окна
ulFlags As Long ' Флаги для окна
' Следующие три параметра в VBA не используются
lpfn As Long
lParam As Long
iImage As Long
End Type
Sub BrowseFolder()
Dim strPath As String ' Папка, список файлов которой выводится
Dim strFile As String
Dim intRow As Long ' Текущая строка таблицы
' Выбор папки
strPath = dhBrowseForFolder()
If strPath = "" Then Exit Sub
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
' Оформление заголовка отчета
ActiveSheet.Cells.ClearContents
ActiveSheet.Cells(1, 1) = "Имя файла"
ActiveSheet.Cells(1, 2) = "Размер"
ActiveSheet.Cells(1, 3) = "Дата/время"
ActiveSheet.Range("A1:C1").Font.Bold = True
' Просмотр объектов в папке...
' Первый объект папки
strFile = Dir(strPath, 7)
intRow = 2
Do While strFile <> ""
' Запись в столбец "A" имени файла
ActiveSheet.Cells(intRow, 1) = strFile
' Запись в столбец "B" размера файла
ActiveSheet.Cells(intRow, 2) = FileLen(strPath & strFile)
' Запись в столбец "C" времени изменения файла
ActiveSheet.Cells(intRow, 3) = FileDateTime(strPath & strFile)
' Следующий объект папки
strFile = Dir
intRow = intRow + 1
Loop
End Sub
Function dhBrowseForFolder() As String
Dim biBrowse As BROWSEINFO
Dim strPath As String
Dim lngResult As Long
Dim intLen As Integer
' Заполнение полей структуры BROWSEINFO
' Корневая папка - Рабочий стол
biBrowse.pidlRoot = 0&
' Заголовок окна
biBrowse.strTitle = "Выбор папки"
' Тип возвращаемой папки
biBrowse.ulFlags = &H1
' Вывод стандартного окна просмотра папок
lngResult = SHBrowseForFolder(biBrowse)
' Обработка результата работы окна
If lngResult Then
' Получение пути (по возвращенным данным)
strPath = Space$(512)
If SHGetPathFromIDList(ByVal lngResult, ByVal strPath) Then
' Строка пути заканчивается символом Chr(0)
intLen = InStr(strPath, Chr$(0))
' Выделение и возврат пути
dhBrowseForFolder = Left(strPath, intLen - 1)
Else
' Не удалось получить путь
dhBrowseForFolder = ""
End If
Else
' Пользователь нажал кнопку "Отмена"
dhBrowseForFolder = ""
End If
End Function