Методологии программирования Excel - PullRequest
6 голосов
/ 21 декабря 2009

В чем различия в программировании Excel между UDF, макросом, надстройкой, надстройкой автоматизации, XLL или VSTO.
Какой из них мне следует использовать и при каких обстоятельствах?

Ответы [ 4 ]

8 голосов
/ 21 декабря 2009

Я попытаюсь сгруппировать / противопоставить некоторые элементы, которые вы упомянули:

VSTO против VBA :
VBA (Visual Basic для приложений) - это «классический» способ написания автоматизации Office. Excel имеет интерфейс разработки, который вы можете запускать из офиса для написания макросов и пользовательских функций, и который не менялся в течение 10 лет. С другой стороны, развертывание тривиально, и VBA предлагает такие замечательные функции, как запись макросов, которые записывают ваши действия в код и предоставляют хороший способ выяснить объектную модель.
VSTO появился совсем недавно и позволяет автоматизировать офис с помощью .NET (использует COM). Вы можете использовать все .NET и Visual Studio (например, добавить формы WPF), что дает большую гибкость, но развертывание является более сложным.
UDF против макроса и надстройки
Пользовательские функции - это пользовательские методы, которые останутся привязанными к вашей книге; после добавления получите тот же статус, что и у «встроенных» функций Excel: их можно вызывать из рабочих таблиц, таких как = MyFunction ()
Макросы - это процедуры, которые будут привязаны к вашей книге. Они могут быть вызваны непосредственно пользователем или прикреплены к событиям (например, когда выбран рабочий лист, сделайте это).
Надстройки прикрепляются не к конкретному документу, а к самому приложению. Обычно к книге прикрепляется макрос или UDF: когда вы открываете документ, вам становится доступен код, а когда вы даете документ, код также копируется. В отличие от этого, надстройки прикрепляются к приложению: когда вы запускаете Excel, надстройка становится доступной для вас. Такие инструменты, как Солвер, являются надстройкой. Обратите внимание, что надстройки могут быть написаны либо на VBA, либо с использованием VSTO (вы также можете писать UDF в .NET, но это нетипично).
Когда использовать что
Надстройка против макросов / пользовательских функций: напишите надстройку, если ваша функциональность должна быть доступна из любой книги.
VSTO или нет VSTO: это вопрос дискуссии. Большинству людей, знакомых с «классической» автоматизацией VBA, не очень нравится VSTO, потому что кривая обучения немного крутая. Если вы привыкли работать с .Net, это не должно быть проблемой, но VSTO несколько необычен по сравнению с «нормальной» разработкой приложений .Net.
Также обратите внимание, что если вы используете VSTO, ваш код не может быть отредактирован пользователем. Это возможно желательно, но в то же время опытные пользователи Excel обычно знают, как использовать VBA и макросы, и ожидают, что смогут настроить код. Это может привести к интересным дискуссиям.
Лично я обычно использую VSTO для надстроек, и я использую его, как только я вижу, что много логического / процедурного кода входит в макросы в VBA. Что дает мне VSTO - это возможность писать тестируемый код в Visual Studio, а также высокопроизводительный код, когда требуются большие вычисления. Другая причина использовать VSTO - использовать WPF для настройки офиса.

4 голосов
/ 21 декабря 2009

Используйте VBA для Excel 2003 и более ранних версий (хотя вы все равно можете использовать его в 2007 году, если хотите).

VSTO для Excel 2003 или 2007.

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

Макросы - это еще одно название кода VBA.

Надстройка - это просто еще одна книга Excel, в которой есть код (например, VBA), так что вы можете использовать код в разных книгах и хранить код непосредственно в книге пользователей.

UDF - это просто функция, написанная на VBA, которая вызывается как функция рабочего листа в ячейке электронной таблицы (ее также можно сохранить в надстройке).

1 голос
/ 21 апреля 2011

Еще несколько моментов со стороны VBA:

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

UDF - Это объявлено с ключевым словом Function. Используйте функцию, если вам нужно вернуть одно значение (или массив, или экземпляр объекта и т. Д.). Пользовательские функции рабочего листа являются пользовательскими функциями, поскольку они возвращают значение только в ячейку. Они не изменяют никаких свойств ячейки, кроме свойства Value. Нельзя применять границы или шрифты, например, с помощью функции.

Макрос - также называются процедурами, они объявляются с ключевым словом Sub. Используйте процедуру, если вам нужно сделать что-то кроме возврата значения, например, если вам нужно манипулировать частями объектной модели Excel.

1 голос
/ 21 декабря 2009

Ланс имеет хорошие определения для ваших вопросов. С точки зрения того, что использовать, когда VBA против VSTO - если вам нужно использовать .net Framework, перейдите с VSTO. Например, я хотел сделать программный интерфейс VB.net с обучением с помощью электронных таблиц. VSTO был бы подходящим способом (это и vba не имеет array.sort, как vb.net, который сводит меня с ума). Однако, если вы создаете изящную электронную таблицу, которая будет делать некоторые интересные вещи для ваших конечных пользователей (формулы, диаграммы и т. Д.), Просто добавьте немного кода VBA в электронную таблицу. Все зависит от того, что вы должны сделать. Лучший инструмент для работы.

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