Архив рубрики: Программирование

Программирование

Несколько On Error в VBA — VBA On Error

VBA On Error

Я уже писал о моем отношении к конструкции в VBA On Error, но к сожалению, по работе частенько с ней встречаюсь. Поэтому сегодня я расскажу об ее одной особенности.

У меня есть макрос в Microsoft Outlook для генерации письма с поиском конкретных вложений. Раньше использовался весь потенциал конструкции VBA On Error, где первоначально шла проверка наличия самих вложений, и как следствие создания письма, и проверка одного отдельного отчета, который мог присутствовать, а мог и отсутствовать…

Позднее мне понадобилось добавить еще одну проверку нового отчета, наличие которого происходило по новой методике условий. Я решил отделаться легким испугом и дописать вторую проверку наличия вложения через VBA On Error GoTo, заметил, что если первый On Error GoTo срабатывал, то второй всегда завершился ошибкой, как-будто он не обрабатывался…
Внимательно почитав документацию и поискав в Google, я понял, что данная конструкция работает один раз в рамках процедуры или функции и решения данной проблемы нет. Именно по этому мне пришлось найти новое решение проверки вложений, о котором я писал ранее, и отказаться от всех конструкций VBA On Error!

Помните, использование конструкции в VBA On Error — это не выход из ситуации, а просто временный костыль, который в будущем может только усложнить доработку программы, старайтесь не пользоваться данной обработкой ошибок!

Проверка существования файла в VBA — VBA Check File

Функция поиска файлов (vba check file)

Все больше замечаю, что многие люди в VBA пользуются конструкцией On Error для проверки ошибок, в частности с оператором GoTo. Я очень не люблю данный оператор, т.к. он затрудняет чтение кода и отладку, да и прыжки в программе не благодарное дело… Поэтому я расскажу, как проверить существование файла (vba check file) более цивилизованными методами.

Функция Dir$(<путь>, <параметры>) — где в качестве первого параметра передаем путь директории или файла, а второго — параметры поиска файлов.

Пример:

Данная функция вернет либо пустую строку, если файла или директории не существует, либо имя файла «test.txt». Для того, чтобы проверить, существует ли файл в директории (vba check file), достаточно длину данной строки проверить с нулем:

Вот таким простым способом можно организовать проверку.

Ошибка в MS Access и MS SQL Server

Сижу я тихо мирно и выгружаю необходимые данные. Выгрузка происходит через Microsoft  Access 2010, который в свою очередь связан с Microsoft SQL Server 2003.

Дошел до одной вьюхи (view), которая собирается на сервере и постоянно выпадает по тайм-ауту. Решил подправить её, убрал лишнее, по оптимизировал все что можно, а делал это через Microsoft SQL Server Managment Studio. Сохраняю вьюху, запускаю в Access выгрузку, проходит минута-две и тут бац, вот такое окно с ошибкой:

Ошибка в MS Access, подключенный к MS SQL Server

Чувствую себя охотником, который все таки подстрелил эту «жертву» xD

Использование CRC32 в VBA — vba crc32 check sum

Как-то по работе мне понадобилось средствами VBA отслеживать изменение Excel-файла (vba crc32 check sum). Первое что пришло на ум, это подсчет CRC32 check sum. Спустя пару часов брожения по интернету, я смог найти и собрать необходимые функции в модуль.

Читать далее Использование CRC32 в VBA — vba crc32 check sum

MS Access, VBA, SQL и удаление записей из объединенных таблиц

На днях я столкнулся с очень интересной работой MS Access при удалении необходимых записей из таблицы средствами SQL.

Суть вопроса состояла в удаление записей тех продуктов в таблице Valid_data, которые присутствуют в таблице ProductsIgnore. Данный запрос отрабатывается в большом макросе VBA, после пары запусков которого, с периодичностью 50%/50%, возникала ошибка и соответственно появлялось отладочное debug-окно.

Читать далее MS Access, VBA, SQL и удаление записей из объединенных таблиц