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

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

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

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

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

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

Макрос создания текстовых файлов по таблице Excel

Макрос предназначен для создания текстовых файлов в кодировке UTF-8.

Исходными данными является таблица Excel из 12 столбцов.

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

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

И потом, когда папка для файла создана, макрос создаёт текстовый файл с содержимым из 10 столбца таблицы,
и сохраняет его под именем, взятым из второго столбца той же таблицы Excel.
После создания файла, у него меняется кодировка на UTF-8 (изначально, при создании, файлы имеют кодировку Unicode)

По окончании работы макроса, открывается папка, содержащая созданные текстовые файлы.

Пример макроса смотрите в прикреплённом файле.

Сбор данных из множества текстовых файлов с разделителями

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

1c04;1J0-698-151-G;1 комплект тормозных накладок;1J0698151G;1J0698151G;5;1
1c04;1H0698151A;Тормозные колодки;1H0698151A;1H0698151A;1;1
1c04;1K0-698-151-B;Тормозные колодки;1K0698151B;1K0698151B;2;1

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

Пример таблицы в Excel

На помощь придёт функция DATfolder2Array

Sub ПримерИспользованияФункции_DATfolder2Array()
    Папка = "D:\Проекты\DATs\"    ' папка, в которой будет производиться поиск файлов DAT для обработки
    Dim ErrorsArray    ' пустой массив для ошибок

    ' считываем данные из все файлов .DAT в папке в двумерный массив
    DataArr = DATfolder2Array(Папка, 7, "1,2,4,5", ErrorsArray)
 
    ' результаты выводим на листы "errors" и "result" (они должны существовать)
    Array2worksheet Worksheets("errors"), ErrorsArray, _
                    Array("Имя файла", "Номер строки", "Данные из строки")
    Array2worksheet Worksheets("result"), DataArr, _
                    Array("Ячейка", "Штрих-Код", "Наименование", "код 1С", "код произв.", "кол-во", "счетовод")
End Sub

Загрузка файла CSV на лист Excel

Загрузка (импорт) файла CSV на лист Excel

Надстройка предназначена для облегчения импорта данных в Excel из текстовых файлов с разделителями (например, из CSV)

Пока во вложении - обычный файл Excel с нужными макросами, надстройку выложу позже

Фамилия и инициалы из ФИО - функция VBA

Результат работы VBA-функции Инициалы

Функция получает в качестве параметра текстовую строку с виде "Фамилия имя отчество", и обрезает имя и отчество, оставляя лишь инициалы - в виде "Фамилия И. О."

Данную функцию можно использовать как UDF (определённые пользователем функции) в ячейках листа Excel.
(см. пример во вложении)

Автор функции: Андрей Энтелис

Описание особенностей функции - на форуме: programmersforum.ru/showpost.php?p=757147&postcount=6

...не существует точного формального алгоритма разделения ФИО на части.