Добрый день вам, мои подписчики, и те, кто случайно увидел этот пост.
Решил я делиться своими знаниями по интереснейшей и как ни крути очень востребованной теме – макросы на VBA.
На самом деле, я планирую рассказывать не только про VBA, но и всем что знаю и чему научился за долгие годы работы.
Не буду описывать самые азы – типы данных, их различия, типы макросов и т.п.. Нет, это будет курс по самым хардкорным вещам, с объяснениями тех моментов которые вы никогда не узнаете в самоучителях и которые обычно не рассказывают другие, такие как я, эксперты.
Начнем с малого – простой скрипт записи в txt файл
' - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
' Создано: 2020.04.06 08:31:29
' Создатель: Фамилия Имя <vbawisard@gmail.com>
' Название: sc_String_In_TXT
' Тип: Sub
' Доступ: Public
' Описание: Записать строку в текстовый файл
' Параметр: strText {String} - Записываемая строка
' Параметр: strFile {String} - Полное имя файла
' - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
Public Sub sc_String_In_TXT(ByVal strText As String, _
ByVal strFile As String)
If Not DEBUGGING Then On Error Resume Next ' Игнорирование ошибки
' - - - - - - - - - - - - - - -
Dim objFSO As Object ' Объект взаимодействия с файловой системой
Dim objTextFile As Object ' Объект ссылка на файл
' - - - - - - - - - - - - - - -
Set objFSO = CreateObject("scripting.filesystemobject") ' Создаем объект взаимодействия с файловой системой
Set objTextFile = objFSO.OpenTextFile(strFile, 8, True) ' Открываем файл
objTextFile.Write vbNewLine & strText ' Записываем строку
objTextFile.Close ' Закрываем файл
Set objTextFile = Nothing ' Чистим память
Set objFSO = Nothing ' Чистим память
' - - - - - - - - - - - - - - -
Err.Clear ' Сбрасываем ошибку
End Sub
Итак, начнем по порядку:
Для того что бы записать какую-то информацию в txt нам необходимо:
1. Записываемая строка (
strText)
2. Имя файла в который будем записывать (
strFile)
Оба значения мы получаем извне как параметры скрипта
Что бы взаимодействовать с файловой системой нам нужны два объекта:
1. Объект файловой системы (
objFSO)
2. Файл в который будем записывать (
objTextFile)
Их мы будем инициировать в момент выполнения
Теперь переходим к основной части. Для выполнения этого действия вам необходимо 4 шага:
1.
Set objFSO = CreateObject("scripting.filesystemobject") - Создать объект взаимодействия с файловой системой
2.
Set objTextFile = objFSO.OpenTextFile(strFile, 8, True) - Создать объект файла – для этого мы указываем:
2.1.
strFile – имя файла
2.2.
8 – режим записи в конец файла
2.3.
True – маркер что необходимо создать файл если он не существует
3.
objTextFile.Write vbNewLine & strText - Записываем в файл не забыв добавить в начало записываемой строки
vbNewLine4.
objTextFile.Close - Закрываем файл
Дальше для полного феншуя я обычно добавляю очистку памяти "убивая" объекты
Set objTextFile = NothingЯ понимаю что по завершению скрипта эти объекты должны сами обнулиться, но я привык руководствоваться принципом "На VBA надейся, а сам не плошай".
Из того что не вошло в основной скрипт, но на что точно обратит внимание внимательный человек:
If Not DEBUGGING Then On Error Resume Next – игнорирование ошибки, причем режим игнорирования может включаться и отключаться глобальной константой
DEBUGGING – когда она
False – ошибки, игнорируются, когда
True – значит включен режим отладки и при ошибке скрипт останавливает выполнение на строке с ошибкой.
Err.Clear – сброс ошибки, на тот случай когда режим дебага отключен, то скрипт пропустит7 ошибку, но при завершении эту ошибку лучше скинуть, иначе она может "потянуться" в другие скрипты и вызвать неожиданные последствия, о которых расскажу подробнее.
Очень надеюсь что мои посты кому-то будут интересны, и/или будут полезны в плане улучшения их навыков работы с VBA и Excel.