2014-11-06 6 views
0

У меня есть файл excel с макросами. Он используется как шаблон для нашей программы. Программа открывает этот файл, вызывает макросы и помещает данные там в качестве параметров. Вопрос в том, как я могу отлаживать эти макросы, когда он вызывается из приложения? Например, в Visual Studio я могу использовать «Attach to process», может быть, в VBA есть что-то подобное?Debug VBA macros

+0

Вы хотите знать, как использовать отладчик Excel VBA или как настроить тестовую среду для имитации сценария с помощью Excel в качестве основного тестового драйвера? – xmojmr

ответ

1

У меня есть несколько различных способов выполнения отладки в Excel, и ни один из них не является совершенным или очень сложным.

  1. Используйте debug.print во всем своем коде для печати в окне Immediate, чтобы узнать, как выполняется программа. Это полезно в двух сценариях: если вы хотите увидеть, как далеко продвигается ваша программа или где она находится в процессе выполнения, или, альтернативно, вы можете войти и добавить более подробную информацию с помощью debug.print, если ваша программа где-то специально, и вы хотите увидеть, что происходит, когда программа выполняется.
  2. Создайте массив, введите информацию журнала в массив по мере выполнения программы и распечатайте массив при завершении выполнения программы. Это несовершенно, потому что это не очень полезно в условиях, когда выполнение программы не завершается успешно, но полезно в сценариях, где вы хотите получить некоторую статистику о том, как программа работает как часть вскрытия.
  3. Добавить код Входит в программу, чтобы вы могли видеть, как программа выполняется при ее запуске. Используйте окно Immediate для проверки значений переменных в программе.

Опять же, ни один из них не является совершенным.

+0

Break Points - это на самом деле то, что мне нужно, но когда макросы вызываются из программы, которая не работает. – Gleb

+0

Можно ли добавить точку останова в код во вторичной электронной таблице? Это решит вашу проблему. Или проблема в том, что у вас нет доступа к вторичной электронной таблице, которая открывается основной программой? –

+0

Программа работает с временной копией файла. Итак, если я ставлю точку останова в коде, она будет проигнорирована. – Gleb