Методологии программирования Excel

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

6
задан Lance Roberts 21 April 2011 в 03:08
поделиться

3 ответа

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

VSTO предназначен для Excel 2003 или 2007.

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

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

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

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

4
ответ дан 8 December 2019 в 17:22
поделиться

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

1
ответ дан 8 December 2019 в 17:22
поделиться

«Насколько я понимаю, между таблицами / столбцами и объектами / атрибутами существует соотношение 1: 1. Таким образом, каждая запись является объектом».

Это не совсем правильно, если только вы не используйте термин «объект» очень свободно. Таблицы моделируются классами , а записи таблиц моделируются экземплярами этих классов .

Допустим, у вас есть клиентов таблица со столбцами id (autonum) и name (varchar). Допустим, у него только одна запись, id = 1 и имя = "Ford". Затем:

  • Таблица БД клиенты будут отображены в класс модели Клиент .
  • Запись будет отображаться в экземпляр модели , Это означает, что вам нужно создать объект и назначить его переменной для работы с записью. Наиболее распространенный способ - выполнить ford = Client.find (1)
  • Два столбца таблицы будут сопоставлены с методами переменной ford . Вы можете выполнить ford.id , и вы получите 1. Вы можете выполнить ford.name , и вы получите строку «Ford». Вы также можете изменить имя клиента, выполнив ford.name = "Chevrolet" , а затем зафиксировать изменения в базе данных, выполнив ford.save.

"Также что такое модель? Я знаю, что он отображается в таблицу "

Модели - это просто классы с множеством очень полезных методов для управления вашей базой данных. Вот несколько примеров:

  • Проверки : Помимо типичных проверок, управляемых базами данных («это поле не может быть нулевым»), вы можете реализовать очень сложные проверки в ruby ​​(наиболее типичным является «это поле должно быть действительным адресом электронной почты»). Проверка выполняется непосредственно перед тем, как вы вызываете "сохранить" в экземпляре модели.
  • Взаимосвязи : внешние ключи также могут быть отображены на модели. Например, если у вас есть таблица брендов (с соответствующей моделью Brand ), связанная через внешний ключ с вашим клиентом ford, вы можете сделать ford.brands и вы получите массив объектов, представляющих все записи в таблице брендов, которые имеют client_id = 1.
  • Запросы : модели позволяют создавать запросы в ruby ​​и сами переводить их в SQL. Эта функция нравится большинству людей.

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

8
ответ дан 8 December 2019 в 17:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: