Макросы VBA Excel — Страница 34

Преобразование пути к сетевой папке в формат UNC

К примеру, требуется преобразовать путь вида Z:\Папка\Разное\ (где Z - буква сетевого диска) в путь вида \\server\Files\Папка\Разное

Для этого можно использовать возможности объекта FileSystemObject:

Sub ПолучениеСетевогоПутиПапки()
    ОбычныйПуть = "Z:\Папка\Разное\"
 
    With CreateObject("Scripting.FileSystemObject").getfolder(ОбычныйПуть)
        СетевойПуть = Replace(.Path, .Drive.Path, .Drive.ShareName)
    End With
 
    Debug.Print ОбычныйПуть, СетевойПуть
    ' СетевойПуть = \\server\Files\Папка\Разное
End Sub

Проверка доступности прокси сервера макросом VBA

Этот код проверяет заданного доступность прокси сервера при помощи функции CheckProxyServer:

Sub ПримерПроверкиПроксиСервера()
    myProxy$ = "212.45.5.172:3128"
 
    If CheckProxyServer(myProxy$) Then
        MsgBox "Прокси сервер с адресом " & myProxy$ & " доступен!", vbInformation
    Else
        MsgBox "Прокси сервер с адресом " & myProxy$ & " недоступен!", vbExclamation
    End If
End Sub

Прокси-сервер (Proxy Server) позволяет скрыть ваш IP адрес, что позволяет вам выполнять запросы к одному и тому же серверу как-бы с разных компьютеров.

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

Загрузить список прокси-серверов вам поможет этот код: http://excelvba.ru/code/ProxyServersList

Диалоговое окно выбора цвета (функция VBA для запроса цвета заливки)

Настройки цвета заливки на форме VBA

Данная функция позволяет запрашивать у пользователя цвет заливки.

Функция возвращает целое число - значение цвета в формате RGB

Пример использования:

Sub ОкраскаЯчейкиВВыбранныйЦвет()
    On Error Resume Next
    DefaultColor& = vbRed    ' цвет по-умолчанию
    NewColor& = PickNewColor(DefaultColor&)    ' выбираем новый цвет
    
    ActiveCell.Interior.Color = NewColor&    ' красим активную ячейку
End Sub

Код функции:

Function PickNewColor(Optional ByVal i_OldColor As Double = xlNone) As Double
    ' функция отображает диалоговое окно выбора цвета заливки
    ' и возвращает значение выбранного цвета
    On Error Resume Next:
    PickNewColor = i_OldColor
    Const BGColor As Long = 13160660, ColorIndexLast As Long = 32
    Dim myOrgColor As Double, myNewColor As Double, WB As Workbook
    Dim myRGB_R As Integer, myRGB_G As Integer, myRGB_B As Integer
    If ActiveWorkbook Is Nothing Then Application.ScreenUpdating = False: Set WB = Workbooks.Add
    myOrgColor = ActiveWorkbook.Colors(ColorIndexLast)    'save original palette color

    i_Color = IIf(i_OldColor = xlNone, BGColor, i_OldColor): myRGB_R = i_Color Mod 256
    i_Color = i_Color \ 256: myRGB_G = i_Color Mod 256
    i_Color = i_Color \ 256: myRGB_B = i_Color Mod 256
    ActiveWorkbook.ResetColors    'AppActivate Application.Name
    If Application.Dialogs(xlDialogEditColor).Show(ColorIndexLast, myRGB_R, myRGB_G, myRGB_B) Then
        PickNewColor = ActiveWorkbook.Colors(ColorIndexLast)
        ThisWorkbook.Colors(ColorIndexLast) = myOrgColor
    End If
    If Not WB Is Nothing Then WB.Close False: Application.ScreenUpdating = True
End Function

Форма "О программе..." с гиперссылкой и бегущей строкой

Форма с гиперссылкой и бегущей строкой

Простой пример реализации гиперссылок и бегущей строки на форме средствами VBA.

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

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

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

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

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

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