Макросы VBA Excel — Страница 18
При работе с базами данных в Excel, где в ячейках присутствуют номера телефонов, порой требуется выполнять звонки по множеству номеров, указанных в таблице.
Обычно этот процесс не автоматизирован - пользователь, глядя в таблицу Excel, набирает на своём мобильном телефоне номер из очередной ячейки.
Чем это чревато - вы и сами понимаете: мало того, что пользователь теряет время, набирая номер на телефоне, так и при наборе номера возможно ошибиться, в результате чего вы потратите лишнее время и деньги.
Предлагаю вашему вниманию макрос, который позволит нажатием одной кнопки набрать номер телефона из ячейки в популярном софтфоне Sippoint (от компании SIPNET)
Sub ПозвонитьНаНомерИзВыделеннойЯчейкиExcel()
' макрос наберёт номер из активной ячейки в программе Sippoint
CallWithSIPPOINT Trim(ActiveCell)
End Sub
Иногда требуется выложить некоторый файл в общий доступ, и поделиться ссылкой на него.
Для автоматизации этой задачи и предназначена функция UploadFile
Фунцкия Get_All_IP_Addresses возвращает коллекцию, содержащую все IP-адреса всех сетевых интерфейсов.
Пример использования функции:
Sub ВыводРезультатов_Get_All_IP_Addresses()
For Each IPaddr In Get_All_IP_Addresses
txt = txt & IPaddr & vbNewLine
Next
MsgBox txt, vbInformation, "Список всех IP адресов"
End Sub
Вашему вниманию предлагается шестнадцатеричный редактор HexEdit.
Для чего нужен шестнадцатеричный редактор?
Для просмотра и корректировки любой информации, содержащейся в файлах.
Кому это может быть нужно и при каких обстоятельствах?
Например, тому, кто хочет заглянуть внутрь файла (любой структуры) и что-либо найти (и поправить). НехEdit будет особенно полезен в тех случаях, когда политика безопасности не разрешает использовать exe-файлы, но разрешает использовать Excel.
В прикреплённом файле - пример макроса для автоматического создания на форме элементов управления.
Благодаря использованию модуля класса, всем создаваемым элементам управления (в данном случае это CheckBox-ы) назначается один и тот же обработчик событий.
Для проверки запустите форму нажатием кнопки на листе Excel, и пощелкайте на чекбоксах на разных вкладках формы.
Код модуля класса:
Public WithEvents CheckBox As MSForms.CheckBox
Public MPname As String
Public MPindex As Integer
Public Index As Integer
Sub CheckBox_Change()
msg = "Изменено состояние чекбокса номер " & Me.Index & vbNewLine & vbNewLine
msg = msg & "на вкладке " & Me.MPname & " (индекс вкладки = " & Me.MPindex & ")" _
& vbNewLine & vbNewLine & vbNewLine
msg = msg & "Новое состояние: " & Me.CheckBox.Value
MsgBox msg, vbInformation, "Вы изменили состояние чекбокса!"
End Sub
Функция предназначена для вывода информации (статистики) по всем листам документа Word.
В качестве параметра, функция получает ссылку на открытый документ Word.
Результат работы функции представлен на скриншоте.
Код функции WordDocumentProperties:
Function JustUnique(ByVal txt As String, Optional ByVal Separator As String = ", ") As String
' Принимает в качестве параметра обрабатываемую строку txt,
' и разделитель Separator элементов строки txt.
' Возвращает строку txt, но уже не содержающую повторяющихся значений
Dim coll As New Collection: On Error Resume Next
For Each v In Split(txt, Separator)
coll.Add CStr(v), CStr(v)
Next v
For Each v In coll: JustUnique = JustUnique & Separator & v: Next v
JustUnique = Mid(JustUnique, Len(Separator) + 1)
End Function
Sub ПримерИспользования_ВыборУникальныхЗначенийИзСписка()
txt = "58, 28, 32, 60, 28, 58, 14"
new_txt = JustUnique(txt) ' возвращает строку "58, 28, 32, 60, 14"
Debug.Print "Уникальные значения: " & new_txt, vbInformation, "Исходная строка: " & txt
End Sub
Программа предназначена для скачивания файлов CSV с сайта за указанный диапазон дат.
Скачиваемые CSV файлы содержат почасовые данные о мощности генерации и потребления ОЭС заданного округа.
Исходными данными для программы выступают 2 даты - начальная и конечная.
Для каждой даты макрос формирует ссылку на требуемый файл CSV, и загружает этот файл из интернета в указанную папку.
В ходе загрузки отображается прогресс-бар.
Скорость загрузки файлов зависит от производительности сервера so-ups.ru, и составляет примерно 10 файлов в секунду.
Макрос загрузки файлов вы найдете во вложении к статье.
Создаваемые файлы получают имена типа
04.01.2000.csv
01.01.2000.csv
02.01.2000.csv
03.01.2000.csv
Все скачанные файлы помещаются в подпапку с именем Файлы CSV, автоматически создаваемую макросом в той же папке, где расположен файл Excel с макросом.
Функция SplitLanguages предназначена для отделения русских слов от английских
(для разбиения заданной текстовой строки на две, в одной из которых будут только русские слова, а в другой - только английские)
Знаки препинания, пробелы, и прочие символы, не относящиеся к конкретному языку, попадают в обе строки.
Например, дана исходная строка "Разработка VBA макросов для программы Microsoft Excel"
Функция возвратит 2 строки: русскую "Разработка макросов для программы", и английскую "VBA Microsoft Excel"
Sub ПримерИспользования()
txt = "Разработка VBA макросов для программы Microsoft Excel"
РусскаяЧасть = SplitLanguages(txt)(0)
АнглийскаяЧасть = SplitLanguages(txt)(1)
Debug.Print РусскаяЧасть ' результат: "Разработка макросов для программы"
Debug.Print АнглийскаяЧасть ' результат: "VBA Microsoft Excel"
End Sub
Данный макрос предназначен для облегчения анализа длинных текстовых строк.
К примеру, в вашем макросе формируется длинная текстовая строка (вы сцепили значения диапазона ячеек, или загрузили текст веб-страницы в текстовую переменную)
Чтобы проанализировать текст на этапе отладки программы, вам необходимо изучить структуру этого текста, - а это удобнее делать в текстовом редакторе
(например, в Блокноте, хотя лично я использую только Notepad++, поскольку он в тысячу раз удобнее Блокнота)
В этом вам поможет макрос ShowText:
Sub ПримерИспользования_ShowText()
' исходный текст любой длины в переменной txt
txt = "Некая текстовая строка, которую нам надо сохранить в файл" & vbNewLine & _
"Поскольку текстовая строка весьма длинная, просматривать её в MSGBOX не удобно" & vbNewLine & _
"Потому мы её просмотрим в Блокноте, предварительно создав временный текстовый файл"
' сохраняем строку в файл, и открываем файл в Блокноте
ShowText txt
End Sub
|
|