Как преобразовать макросы excel vba в exe-файл?

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

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

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

Это будет намного медленнее. Использование EXE означает активацию вне процесса, которая намного медленнее, чем в процессе. Однако вам нужно только переписать его части (теперь необходимо создать экземпляры глобальных объектов, а для констант необходимо ввести числовое значение).

CatCat 26.10.2018 08:41

Добро пожаловать в SO. Первый ответ: нет, нельзя. Второй ответ, нет, вы не можете, но, вероятно, вы могли бы разработать что-то с VB (обратите внимание, что VB не VBA), потому что синтаксис похож (но они разные). Если ваш код несложный и работает, выбирая файлы Excel, вы можете создать в VB простой Приложение Microsoft Form, а затем применить свой код (вам придется адаптировать некоторые части, но не все. Попробуйте

Foxfire And Burns And Burns 26.10.2018 09:13
5
2
15 177
3

Ответы 3

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

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

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

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

Спасибо за ваш ответ. Нет, мое заблуждение о простом способе создания exe с использованием моего кода очищено ... я попробую использовать визуальную студию и переписать свой код

nikhild64 26.10.2018 10:43

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

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

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

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

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

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

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