mail mail

Разное

Разное - всего понемногу

В этой статье опубликованы различные вспомогательные функции на VBA, которые порой помогают в работе.

Звонок из Excel через SIP софтфон Sippoint

При работе с базами данных в Excel, где в ячейках присутствуют номера телефонов, порой требуется выполнять звонки по множеству номеров, указанных в таблице.

Обычно этот процесс не автоматизирован - пользователь, глядя в таблицу Excel, набирает на своём мобильном телефоне номер из очередной ячейки.

Чем это чревато - вы и сами понимаете: мало того, что пользователь теряет время, набирая номер на телефоне, так и при наборе номера возможно ошибиться, в результате чего вы потратите лишнее время и деньги.

Предлагаю вашему вниманию макрос, который позволит нажатием одной кнопки набрать номер телефона из ячейки в популярном софтфоне Sippoint (от компании SIPNET)

Sub ПозвонитьНаНомерИзВыделеннойЯчейкиExcel()
    ' макрос наберёт номер из активной ячейки в программе Sippoint
   CallWithSIPPOINT Trim(ActiveCell)
End Sub

Макрос для снятия ограничений Excel (безопасность макросов и файлов)

Если вы работаете с книгами Excel древних форматов (таких, например, как Excel 4),
то в Excel 2010 вы можете столкнуться с проблемой, что редактирование этих файлов по-умолчанию запрещено.

В настройках Excel 2010 для этого предусмотрены специальные опции (скриншот)

Мало того, что Excel блокирует редактирование этих устаревших файлов,
так ещё и макросы начинают вести себя очень странно
(например, если активен файл Excel4, простейший макрос чтения пути текущего файла не запускается)

Избежать проблем при работе с такими файлами (а проблемы возможны, если вы обрабатываете макросом множество файлов, полученных от разных организаций), можно, если при открытии надстройки (файла с макросами) выполнить следующий код:

Звонок с мобильного телефона или SIP софтфона EyeBeam из Excel

При работе с базами данных в Excel, где в ячейках присутствуют номера телефонов, порой требуется выполнять звонки по множеству номеров, указанных в таблице.

Обычно этот процесс не автоматизирован - пользователь, глядя в таблицу Excel, набирает на своём мобильном телефоне номер из очередной ячейки.

Чем это чревато - вы и сами понимаете: мало того, что пользователь теряет время, набирая номер на телефоне, так и при наборе номера возможно ошибиться, в результате чего вы потратите лишнее время и деньги.

Предлагаю вашему вниманию макрос, который позволит нажатием одной кнопки набрать номер телефона из ячейки в популярном софтфоне EyeBeam

Sub ПримерКодаДляЗвонкаИзExcel()
    ' макрос запустит программу EyeBeam, и наберёт указанный номер
   CallWithEyeBeam "8-912-3456789"
End Sub

Чуть позже я также опубликую макрос для экспорта списка номеров из таблицы Excel в контакт-лист программы eyeBeam
(формируется CSV файл, который можно импортировать в eyeBeam)

Для работы этого макроса, скопируйте в стандартный модуль следующие функции:

Сохранение настроек почтового аккаунта в реестре

Форма редактирования настроек почты в Excel

Макрос предназначен для сохранения в реестре (и изменения через форму) настроек почтового аккаунта.

Эти настройки используются макросом рассылки почты Send_Mail
(для отправки почты из Excel без применения специализированных почтовых программ)

При запуске формы, она считывает из реестра Windows ранее сохранённые настройки.

Данный подход позволяет избежать хранения конфиденциальных данных в коде программы, что важно, если вы передаёте файл с программой рассылки почты другим людям.
При использовании этой формы ввода, каждый пользователь сможет самостоятельно задать макросу свои настройки своей учётной записи

После редактирования логина, пароля или адреса SMTP-сервера,
нажмите кнопку «Сохранить и проверить», чтобы сохранить в реестре изменённые данные.

После сохранения настроек, макрос попытается отправить тестовое письмо, используя сохранённые настройки.
(для этого, помимо формы, в книге Excel в стандартном модуде должен присутствовать макрос Send_Mail)

Если введённые настройки корректны, на компьютере есть доступ к интернету, и в системе установлена библиотека CDO for Windows,
будет выведено сообщение об успешной отправке тестового письма.

Данную форму можно использовать и для сохранения в реестре любых других настроек макроса.

Автозапуск файла при открытии Excel

Сегодня мы поговорим о том, как добиться автоматического открытия вашего файла Excel (книги или надстройки) при запуске приложения Microsoft Excel

Способов добавить файл в автозагрузку Excel достаточно много, поэтому мы рассмотрим только самые основные:

  • открытие файлов из папки автозапуска
  • подключение файла как надстройки

Начнём с папки автозагрузки (точнее, с папок, поскольку их может быть несколько)

Работа с FTP из VBA (без использования WinAPI)

Представляю вашему вниманию инструментарий для работы с файлами по FTP, не требующий использования системных функций (WinAPI)

Как известно, отправить файл на FTP сервер (или загрузить файл с FTP, создать папку на FTP сервере, и т.д.) можно при помощи таких API-функций из библиотеки wininet.dll, как FtpPutFile, FtpGetFile, FtpRenameFile, FtpDeleteFile, FtpRemoveDirectory, FtpCreateDirectory, FtpFindFirstFile и т.д.

Как именно использовать эти функции - можете посмотреть в коде надстройки для отправки файлов Excel на FTP сервер

В чем недостаток этого способа - так это в необходимости обеспечения совместимости кода с различными платформами.
В частности, чтобы код с функциями API работал и в Office 2010, и в 64-битной Windows, необходимо заметно увеличить объём кода. А, поскольку описание этих функций из wininet.dll и без того занимает много места (а универсальный код вообще займёт сотню строк), да и надо ещё и разбираться во всех этих функциях, т.к. в разных версиях Windows возможны различия в способе вызова функций из wininet.dll, и были созданы аналоги этих функций для работы с FTP, не использующие WinAPI

Сподвигла меня на это решение необходимость реализации средств обновления надстроек Excel, где необходимо было реализовать функционал отправки файлов Excel на FTP сервер, причем так, чтобы это стабильно работало на всех компьютерах. Попутно, кстати, родилась и функция загрузки файла с сервера без использования WinAPI, которая тоже вошла в состав данного инструментария.

 

Основу предлагаемого мной решения составляет модуль класса FTPcommander, который предоставляет вам следующие функции:

Загрузка списка подпапок (2 уровней) в Excel

Скриншот таблицы Excel со списком папок и подпапок

Макрос предназначен для загрузки в Excel списка подпапок заданной папки

Для каждой из найденных папок производится поиск всех подпапок, и для каждой подпапки из списка выводится необходимая информация (в частности, количество файлов и подпапок, а также размер папки в байтах)

Для всех ячеек с названиями папок и подпапок макрос проставляет гиперссылки, позволяющие быстро получить доступ к нужному каталогу.

Также обратите внимание, что в столбце «размер папки» хоть число и выводится с единицей измерения (слово «байтов»), тем не менее, в ячейках хранятся числовые значения, что позволяет корректно выполнять сортировку, и использовать значения этих ячеек в формулах

Смотрите также макрос загрузки списка файлов из заданной папки,
и макрос загрузки списка подпапок выбранной папки

Код макроса:

Отправка писем из Excel при помощи почтовой программы TheBAT!

Отправка почты из Excel при помощи TheBAT!

Макроc предназначен для автоматизированной рассылки почты из Excel.

Для рассылки используется почтовая программа TheBAT!

(подразумевается, что эта программа на компьютере установлена и настроена, т.е. без проблем удаётся вручную создать в TheBAT письмо, и отправить его на произвольный адрес)

В качестве исходных данных выступает таблица Excel, в которой в первом столбце указаны адреса получателей рассылки, а в остальных столбцах - данные для формирования писем (тема, текст и т.д.)

В прикреплённом примере макрос формирует тему письма из значения ячейки второго столбца

Чтение значений из реестра Windows на VBA

Чтение и запись в реестр Windows в произвольную ветку можно произвести при помощи функций объекта WScript.Shell:

RegRead и RegWrite

Первая функция возвращает значение, считанное из реестра, вторая - записывает заданное значение в реестр.

При попытке считать несуществующий параметр возникает ошибка,
обойти которую нам поможет директива On Error Resume Next 

 

Пара функций для примера:

(получаем настройки программы из реестра Windows)

RSS-материал