У меня есть код VB6, который выполняет различные макросы Excel. Я установил свои точки останова в VB6 и в макросе Excel, а затем начал отладку в приложении VB6. Когда он достигает (контрольной точки) инструкции для выполнения макроса, он пропускает команду и продолжает перемещаться по моему VB6-коду. Я ожидал, что он перейдет в Excel и начнет отладку макроса Excel. Есть ли какая-то конфигурация или трюк для отладки макроса Excel, который вызывается из приложения VB6?Отладка макроса Excel через Microsoft Visual Basic 6.0
ответ
Когда VB6 выполняет свой собственный код, он позволяет программисту, использующему IDE, устанавливать точки останова и давать управление пользователю, когда выполнение достигло указанных упомянутых точек останова. Однако установка контрольных точек в Excel принесет вам пользу, если вы (программист) выполнили макрос из интерфейса Excel. Это не тот случай, когда VB6 отвечает за запуск Excel и сообщает ему о выполнении макросов в книге.
Вот что вы можете сделать:
перенесет все макро-кода в VB6. Это довольно просто, вам просто нужно добавить несколько слов здесь и там, как этот
'In Excel macro:
Activecell.Offset(0,1).Value = "my value"
поэтому, если мы хотим, чтобы перенести эту строку макроса VB6:
'In VB6 you must declare an instance of EXCEL application:
Dim EX as Excel.Application
EX.Workbooks.Open('c:\my_excel_file.xls')
EX.Sheets(0).Activate 'Go to the first sheet
'Then you are back to business:
EX.ActiveCell.Offset(0,1).Value = "my vlaue"
'But don't forget to close and dispose of EX instance afterwards.
EX.Activeworkbook.Close 'Check save options
EX.Quit
Set EX = Nothing
После переноса всех функциональность макросов для VB6, вы можете установить точки останова в VB6, и у вас будет весь контроль над выполнением, и вы сможете отлаживать код, как вы намеревались сделать.
Я работаю с полноценным приложением vb6. Я не могу перенести свои макросы в свой код VB6. Занимательно и трудоемко, потому что макросы очень большие. Не существует ли флажок, который я могу выбрать, или команду для использования во время отладки? – Jmunndi
- 1. Visual Basic 6.0 и MS Excel 2003
- 2. Visual Basic 6.0
- 3. Visual Basic и MS Excel
- 4. Visual Basic 6.0 Case Statement
- 5. Visual Basic 6.0 Форма входа
- 6. Visual Basic 6.0 hash function
- 7. Децималы в Visual Basic 6.0
- 8. Документирование кода Visual Basic 6.0
- 9. Генератор кода Visual Basic 6.0
- 10. Ошибка Microsoft Visual Basic
- 11. Microsoft Visual Basic
- 12. Разница между Visual Basic 6.0 и VBA
- 13. Автоматическое преобразование типов в Visual Basic 6.0
- 14. Как читать файл Excel (97-03) в Visual Basic 6.0
- 15. Автоматизация Microsoft Microsoft Visual C#/Basic .NET
- 16. Visual Basic Excel Macro
- 17. Visual Basic OpenLinks Excel
- 18. Microsoft Visual Basic в Visual Studio C#
- 19. Visual Basic 6.0 отсутствует компонент компонента richtextedit
- 20. Magic square error in visual basic 6.0
- 21. datagrid в visual basic 6.0 не обновляется
- 22. Объявление Visual Basic от 6.0 до VB.NET
- 23. Visual Basic 6.0 Передача ссылочной проблемы
- 24. Генератор диаграмм Visual Basic 6.0 UML
- 25. Создать дублирующую форму в Visual Basic 6.0
- 26. Десятичный тип данных в Visual Basic 6.0
- 27. Поделиться на Facebook от Visual Basic 6.0
- 28. Функция CreateDC Для Visual Basic 6.0
- 29. Использование HID USB в Visual Basic 6.0
- 30. Как автоматизировать Microsoft Excel 2010 из Visual Basic .NET 2010
Можете ли вы поместить код вызова (или эквивалент) в VBA и запустить его там? Затем вы отлаживаетесь в одной среде. –
Это имело бы смысл и облегчало бы жизнь. Но я только что присоединился к команде Dev, которая создала это приложение несколько лет назад. Я не уверен, что думали оригинальные разработчики, кроме чрезмерно усложняющих процессов. – Jmunndi
Если код VBA должен выполнять большую обработку, и он много раз обращается к файлу Excel, то он, скорее всего, будет работать быстрее, чем эквивалентный код VB, используемый для автоматизации Excel, поскольку VBA не нуждается в маршалировании всего процесса границы (мое понимание IANACS). Возможно, поэтому они так и решили. –