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

Автоподбор высоты объединённых ячеек

Предлагаю 2 варианта автоподбора высоты объединённых ячеек в Excel
(оба работаю не идеально, - но, тем не менее, в большинстве случаев и этого будет достаточно)

1 вариант: (разъединение, автоподбор, объединение)

Sub AutoFitMergeAreaSize(ByRef cell As Range)
    Dim ra As Range: Set ra = cell.MergeArea
    cell.UnMerge
    cell.EntireRow.AutoFit
    ra.Merge
End Sub
 
Sub ПримерИспользования_АвтоподборВысотыОбъединённойЯчейки()
    AutoFitMergeAreaSize ActiveCell
    AutoFitMergeAreaSize [d3]
End Sub

2 вариант:(то же самое, по сути, только кода побольше)

Авторизация на Яндексе с использованием WinHttpRequest

Приведённый ниже код выполняет авторизацию на Яндексе, отправляя GET и POST запрос

Преобразование массива в XML (экспорт таблицы в файл XML)

Функция Array2XML формирует из исходной таблицы объект типа DOMDocument, который можно выгрузить в XML-файл одной строкой кода (метод Save)

Sub XMLExport()
    Dim Заголовок As Range, Данные As Range
    Set Заголовок = Range("a1:f1")
    Set Данные = Range([A2], Range("A" & Rows.Count).End(xlUp)).Resize(, Заголовок.Columns.Count)
 
    arrHeaders = Application.Transpose(Application.Transpose(Заголовок.Value))
    ПутьКФайлуXML = ThisWorkbook.Path & "\result.xml"
 
    ' формируем DOMDocument, и сохраняем XML в файл result.xml
    Array2XML(Данные.Value, arrHeaders, "Root").Save ПутьКФайлуXML
 
    If Err = 0 Then MsgBox "Создан XML файл" & vbNewLine & ПутьКФайлуXML, vbInformation, "Готово"
End Sub

Функция PING на VBA с изменяемым размером ICMP пакета

Public Function Ping(ByVal ComputerName As String) As Boolean
    ' возвращает TRUE, если пинг прошел
    Dim oPingResult As Variant
    For Each oPingResult In GetObject("winmgmts://./root/cimv2").ExecQuery _
        ("SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'")
        If IsObject(oPingResult) Then
            If oPingResult.StatusCode = 0 Then
                Ping = True        'Debug.Print "ResponseTime", oPingResult.ResponseTime
                Exit Function
            End If
        End If
    Next
End Function

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

Sub TestPingFunction()
    If Ping("ComputerName") Then ПутьКПапке = "\\ComputerName\files"
    If Ping("ya.ru") Then MsgBox "Интернет доступен!"
    If Not Ping("192.168.0.2") Then MsgBox "Компьютер с IP адресом 192.168.0.2 недоступен в сети!"
End Sub

Надстройка для программного добавления кнопок на лист Excel

Кнопки на листе Excel, созданные макросом

Надстройка предназначена для автоматизации добавления кнопок запуска макроса на лист Excel

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

Решением стало создание этой надстройки - теперь достаточно выделить диапазон ячеек на листе Excel, нажать комбинацию клавиш типа Alt + 1, - и через мгновение на листе создаётся зелёная кнопка с названием «Запуск», расположенная точно поверх ранее выделенных ячеек. Остаётся только назначить этой кнопке макрос, щелкнув по ней правой клавишей мыши.

Пример кода VBA для создания кнопки:

Sub ПримерИспользования()
    СоздатьКнопку Selection, vbGreen, "Обработать данные": End Sub
End Sub

Для вызова формы (где можно настроить текст и цвет будущей кнопки) предназначена комбинация клавиш Ctrl + Alt + Shift + B