Как я могу преобразовать свои макросы Excel VBA в EXE-файл?

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

Однако вместо того, чтобы распространять эти инструменты в виде листов Excel, могу ли я преобразовать свои коды в исполняемый файл и распространить его среди пользователей, которые могут запускать его там?

Я много искал в Excel, чтобы закрыть связанные темы, но не получил удовлетворительного ответа, поэтому подумал о создании новой темы.

3 ответа

Этот ответ тоже может быть неутешительным, но дело в том, что Excel не является инструментом программирования для создания автономных приложений (exe).

Поэтому вам нужно переписать ваш проект с использованием реального языка программирования (и инструмента), такого как VB.NET или C#. VBA (Visual Basic для приложений) предназначен для запуска в приложениях, как следует из его названия (например, Excel или другие приложения Office), но не отдельно.

Нет способа просто преобразовать код (нажатием кнопки или чего-то еще), вам нужно будет полностью переписать весь проект / инструмент (вручную) на другом языке программирования, если вы планируете использовать свое приложение отдельно (exe) без Excel.

Обратите внимание, что даже если VBA и VB.NET используют похожий синтаксис, вы не можете просто скопировать код. Это 2 совершенно разных языка, и код необходимо переписать. Даже если результат будет выглядеть похожим, это не то же самое.

Ваше решение не является ответом на ваши потребности. На самом деле вам нужен файл надстройки, который вы можете распространять среди своих пользователей. Этот файл расширяет Excel и предоставляет пользователям доступ к вашим инструментам, но может быть защищен паролем и скрыт, чтобы пользователи не могли связываться с ним. В самом простом случае это просто случай сохранения книги, содержащей ваш код, в виде файла надстройки, но вам нужно переписать код, чтобы явно указать, с какой книгой вы работаете, поскольку ThisWorkbook в вашем коде является надстройкой. in, и ActiveWorkbook - это файл, который пользователь открыл при использовании вашего надстройки. Вам также потребуется разработать меню, чтобы предоставить пользователям доступ к вашим инструментам, поскольку они не видят надстройку.

Вы можете сделать это только в том случае, если вы делаете это вне Excel, напишите программу в средстве разработки Windows, которая может взаимодействовать между приложениями. Для этого вы можете использовать множество платформ разработки Microsoft, например C#.

То, что вы хотите сделать, это запустить процесс, чтобы помешать другому процессу.

Как это сделать, во многом зависит от целевой версии Windows. Это непростая тема, и я не знаю, действительно ли вы хотите пойти по этому пути. Но если вы делаете, Google на межпроцессное взаимодействие и Windows.

Это хорошая обзорная статья:

https://docs.microsoft.com/en-us/windows/desktop/ipc/interprocess-communications

Другие вопросы по тегам