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

Макрос для установки (замены) пароля на открытие, для все файлов Excel в заданной папке

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

В качестве исходных данных, задаётся старый и новый пароли.

Если поле «старый пароль» - пустое, подразумевается, что у файлов нет пароля.
Если поле «новый пароль» - пустое, подразумевается, что с файлов снимается пароль.

Нажимаем кнопку, - появляется диалоговое окно выбора папки, - после чего макрос в цикле открывает всё файлы,
и пересохраняет их с новым паролем.

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

ВНИМАНИЕ: Это очень опасный макрос, - если вы случайно забудете, какой пароль вы установили на файлы,
- все обработанные макросом файлы Excel станут недоступны!

Так что, пользуйтесь макросом на свой страх и риск.

Напоминаю: снять (сбросить) пароль н а открытие файла невозможно!
(только полным перебором, - а это очень долго)

Часть кода макроса: (см. прикреплённый файл)

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

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

RegRead и RegWrite

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

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

 

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

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

Выборка случайных строк из двумерного массива

Функция RandomRowsFromArray предназначена для выборки из двумерного массива случайных строк.

К примеру, исходный массив (таблица) имеет размер 1000*20 (1000 строк, и 20 столбцов)
Нам требуется выбрать из этой таблицы, случайным образом, 50 строк
(получив, таким образом, таблицу размерами 50*20)
Кроме того, необходимо, чтобы при каждом новом запуске макроса,
в выборку попадали новые строки
.

В прикреплённом к статье файле вы найдете пример такого макроса:

Sub ПримерИспользования_RandomRowsFromArray()
    ' считываем массив с листа
    arr = [a1:e20].Value
    ' считываем количество строк в выборке
    Количество = Val([NewCount])
 
    ' выбираем строки из массива случайным образом (получаем новый массив newarr)
    newarr = RandomRowsFromArray(arr, Количество)
 
    ' заносим результат на лист (справа от исходных данных)
    Range("g1").Resize(UBound(newarr, 1), UBound(newarr, 2)).Value = newarr
End Sub

Преобразование текстовой строки в двумерный массив

Function Text2Array(ByVal txt$, Optional ByVal ColumnsSeparator$ = " ", _
                    Optional ByVal RowsSeparator$ = vbNewLine) As Variant
    ' получает в качестве параметров текстовую строку TXT,
    ' и разделители строк и столбцов для разбиваемой строки
    ' Возвращает двумерный массив - результат разбиения строки
    txt = Trim(txt): On Error Resume Next: Err.Clear
    If txt Like "*" & RowsSeparator$ Then txt = Left(txt, Len(txt) - Len(RowsSeparator$))
 
    tmpArr1 = Split(txt, RowsSeparator$): RowsCount = UBound(tmpArr1) + 1

Пропорциональное изменение размеров изображения в зависимости от значения в ячейках

Изменение размеров изображения пропорционально значениям ячеек на листе Excel

Этот простейший макрос позволяет пропорционально изменять размеры изображения (высоту и ширину) в зависимости от значений ячеек B3 и B4.