Конвертировать макросы Excel 4 в VBA - PullRequest
6 голосов
/ 18 сентября 2008

У меня есть старый макрос Excel 4, который я использую для выставления ежемесячных счетов. Он содержит около 3000 строк и содержит множество листов диалогового окна Excel 5 (для диалоговых окон). Я хотел бы знать, какой самый простой способ был бы преобразовать это в Visual Basic и стоит ли это того. Я также хотел бы знать, как, если однажды я преобразовал его в VBA, как создать его автономное приложение.

Ответы [ 4 ]

6 голосов
/ 18 сентября 2008

Я пытался сделать это раньше, и в конце вам нужно переписать это, как сказал Бири.

Я проделал большую часть этой работы, когда наша компания переходила с Windows NT на Windows XP. Я часто обнаруживал, что проще вообще не смотреть на старый код и начинать заново с нуля. Вы можете потратить так много времени, пытаясь понять, что делал Excel 4, особенно в отношении «странного» обозначения диалогового окна. В конце концов, если вы знаете, что представляют собой входы и выходы, то это часто более эффективно и чище переписать.

Использовать или нет VBA - это в некотором смысле другой вопрос, но VBA довольно мощный и расширяемый, поэтому, хотя я предпочел бы использовать другие инструменты, такие как .NET, во многих случаях он работает хорошо и его легко развернуть.

В смысле стоит ли это того? Если бы вы могли сказать, что вам больше никогда не понадобится менять макрос Excel 4, то, возможно, нет. Но в бизнесе всегда есть что-то, что меняет, например, налоговые ставки, особенно в конце года. Учитывая, как трудно найти somone для поддержки Excel 4 и даже найти документацию по нему, я бы сказал, что рискованно не переходить на VBA, но это что-то, чтобы сбалансировать.

3 голосов
/ 27 сентября 2011

(Отказ от ответственности: я разрабатываю библиотеку Excel-DNA)

Вместо перемещения макроса в VBA, который использует объектную модель автоматизации COM, отличающуюся от языка макросов Excel, вместо этого переместите его в VB.NET (или C #), работающий с библиотекой Excel-DNA .

Excel-DNA позволяет использовать C API, который очень близко отражает язык макросов. Для каждой макрокоманды, как и у ваших диалогов, есть функция C API, которая принимает те же параметры. Например, эквивалентом DIALOG.BOX будет xlfDialogBox - в этой теме есть некоторые обсуждения и примеры: http://groups.google.com/group/exceldna/browse_thread/thread/53a8253269fdf0a5.

Одним из больших преимуществ этого шага является то, что вы можете постепенно изменять части своего кода для использования интерфейса автоматизации COM - Excel-DNA позволяет смешивать и сочетать интерфейсы COM и API C.

2 голосов
/ 18 сентября 2008

AFAIK нет возможности как-то его конвертировать. Вы должны в основном переписать в VBA.

Если вы преобразовали в VBA, вы не сможете работать как отдельное приложение. Как VBA заявляет Visual Basic для приложений, он живет внутри приложения (Word, Excel, Scala и т. Д.).

Вы должны изучить стандартный язык (не макроязык), чтобы создавать автономные приложения. Но вам нужно выучить гораздо больше, чем сам язык. Вы должны изучить различные методы, например, обработку базы данных вместо обработки листа Excel, печать вместо печати Excel и так далее. Так что в основном вы потеряете много функций, что очевидно, если вы используете Excel.

0 голосов
/ 18 сентября 2008

Вот хорошая статья по этой теме: http://msdn.microsoft.com/en-us/library/aa192490.aspx

Вы можете скачать VB2008-Express бесплатно по адресу: http://www.microsoft.com/express/default.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...