К каким элементам управления формы может получить доступ проект VBA из Office 2007?

В проекте VBA вы можете создать пользовательскую форму и добавить к ней элементы управления с помощью окна панели инструментов. По умолчанию окно панели инструментов содержит простые элементы управления формы, такие как Label, TextBox, ListBox и т. Д.

Вы можете добавить дополнительные элементы управления, если они установлены на вашем компьютере: щелчок правой кнопкой мыши по «дополнительным элементам управления» на панели инструментов отображает целый набор элементов управления. Однако это не указывает на то, откуда они пришли.

Мне интересно узнать, какие элементы управления гарантированно будут доступны на машине, на которой установлен Office 2007. Это только стандартные, или некоторые из «дополнительных элементов управления» также гарантированно будут доступны (либо потому, что они поставляются с Office 2007, либо потому, что они существуют во всех версиях Windows, на которых будет работать Office 2007)?

Например, я удивлен, что даже в Office 2007 нет элемента управления treeview. В моем списке «дополнительных элементов управления» я вижу «Microsoft TreeView Control v6», но я не знаю, могу ли я полагаться на его присутствие для всех мои пользователи Office 2007.


person Gary McGill    schedule 17.07.2012    source источник
comment
Какие дополнительные элементы управления вы планируете использовать? Я понимаю, что это трудно предсказать, но вы можете получить больше ответов, если конкретно укажете, что вы собираетесь использовать, вместо того, чтобы запрашивать список.   -  person JimmyPena    schedule 19.07.2012
comment
Мне были бы интересны обычные подозреваемые - список с поддержкой сетки, иерархическое древовидное представление, элемент управления календарем и тому подобное.   -  person Gary McGill    schedule 19.07.2012
comment
@GaryMcGill обновил мой ответ b / c. Я думаю, вы сможете использовать список в качестве элемента управления, подобного сетке.   -  person ray    schedule 27.07.2012
comment
@ ray023: спасибо. Ты в моей книге ray001 :-)   -  person Gary McGill    schedule 27.07.2012


Ответы (1)


Отображаемые вами элементы управления являются частью FM20.DLL; который является частью пакета установки Office.

Вы можете увидеть, что все они являются частью одной и той же библиотеки DLL, посмотрев на часть «Расположение» в поле «Дополнительные элементы управления».

введите описание изображения здесь

AFAIK, это единственные элементы управления, которые гарантированно доступны в большинстве установок Office.

Итак, давайте посмотрим, что можно сделать конкретно для каждого элемента управления, о котором вы спрашиваете в своих комментариях:

  1. список возможностей "сетки"
  2. иерархическое древовидное представление
  3. управление календарем

Сетки

Это будет зависеть от ваших требований, но вы можете обойтись без списка. Список в VBA имеет несколько свойств, которые сделают его похожим на сетку.

Например, допустим, рабочий лист в Excel выглядит так:

ID001   Value 1 Description 1
ID002   Value 2 Description 2
ID003   Value 3 Description 3

Список поддерживает несколько столбцов, поэтому вы можете отобразить эти значения, установив для свойства списка ColumnCount значение 3 и написав следующий код:

    Me.ListBox1.ColumnWidths = "50;100;200"
    Me.ListBox1.RowSource = Sheet1.Range("A1:C3").Address

Вы получите что-то вроде этого: введите описание изображения здесь

Хотите скрыть столбец? Нет проблем, измените ширину свойства ColumnWidths на ноль, чтобы столбец скрылся:

Me.ListBox1.ColumnWidths = "50;0;200" 'Hide column 2

введите описание изображения здесь

Что хорошего в сетке, если из нее нельзя что-то выбирать?

В списке измените свойство ListStyle на frmListStyleOption, а затем измените MultiSelect на frmMultiSelect.

Это даст вам список, который больше похож на сетку:

введите описание изображения здесь


Календарь

ОБНОВЛЕНИЕ 17.08.2012. Прочтите этот пост . Один из ответивших парней создал свой собственный элемент управления календарем.

Для Office существует элемент управления календарем (mscal.ocx):

введите описание изображения здесь

Однако должны быть соблюдены правильные условия:

  1. Доступ должен быть установлен на клиентском компьютере
  2. Версия Office не может быть Office 2010, поскольку она была удалена вместе с этой версией (см. Функции удалено из Microsoft Access)

Вы по-прежнему можете настроить управление календарем с установками 2010 и / или без Access Office, но это требует дополнительных действий на клиентском компьютере.

  1. Загрузите mscal.ocx.
  2. Распакуйте его в каталог windows / system32
  3. Зарегистрируйте это

В виде дерева

Если для ваших клиентов приемлемо установить некоторые EXE-файлы, вы можете попросить их установить Общие элементы управления Microsoft Visual Basic 6.0. Это даст вам элемент управления TreeView.

введите описание изображения здесь

Я готов поспорить, что на большинстве машин (особенно старых с Windows XP) эти OCX уже установлены; таким образом, установка может не потребоваться.

Самая большая проблема заключается в том, что вы развертываете OCX на клиентских машинах, и это расстраивает с точки зрения поддержки.

person ray    schedule 25.07.2012
comment
Спасибо за отличный ответ. Это нехорошие новости, но это не ваша вина :-) Я действительно хотел полностью избежать необходимости устанавливать что-либо, так как для меня самое замечательное в надстройке Office то, что вы можете распространять ее по электронной почте и не должны на самом деле установить что-нибудь. Таким образом, даже общие элементы управления отсутствуют, если они не стали частью базовой установки Windows. - person Gary McGill; 26.07.2012