⚒️
MS Visio Automation Hints
  • 📖MS Visio VBA
  • 💡Объектная модель Visio
  • ⚠️Проблема с отображением кириллицы в VBA-редакторе
  • 💻Как изменить координаты фигуры программно
  • 📌Преобразование в абсолютные координаты страницы
  • 🕹️Эмуляция работы с интерфейсом приложения
  • 📜Применение CommandBars в Visio 2010+
Powered by GitBook
On this page
  • В чем заключается
  • Способы решения проблемы
  • Выполнение "раннего связывания"
  • Нюансы использования VBA-редактора в стороннем приложении

Проблема с отображением кириллицы в VBA-редакторе

Присутствует во всех версиях начиная с Visio 2013.

PreviousОбъектная модель VisioNextКак изменить координаты фигуры программно

Last updated 3 years ago

В чем заключается

При попытке непосредственно вводить буквы кириллического алфавита в VBA-редакторе вместо них отображаются буквы латинского алфавита и/или вопросительные знаки!

На вышеуказанной картинке дано сравнение трех вариантов:

  • некий текст содержащий кириллицу, набранный в приложении Notepad;

  • отображение этого же текста при вводе в VBA-редакторе ;

  • отображение этого же текста скопированного в приложении Notepad и вставленного в VBA-редактор при английской раскладке клавиатуры.

Способы решения проблемы

  1. Напечатать текст в приложении Notepad, скопировать и вставить в редактор. При этом необходимо следить за раскладкой клавиатуры !

  2. Напечатать текст в окне приложения MS Word (или MS Visio), скопировать и вставить в редактор. При этом можно следить за раскладкой клавиатуры.

К недостаткам первых двух способов можно отнести отсутствие опции автоматического завершения вводимого текста (автокомплит, от англ. autocomplete). Если вы не знаете в совершенстве синтаксис языка VBA для приложения MS Visio, это может стать для вас затруднением. Автокомплит позволяет минимизировать опечатки при вводе текста.

Использование "раннего связывания" предоставляет полный доступ к объектной модели MS Visio из стороннего приложения!

Выполнение "раннего связывания"

В качестве примера рассмотрим приложение MS Excel.

  • Для того нужно VBA-редакторе в меню Tools выбрать пункт References.

  • Выбрать из списка доступных библиотек библиотеку Microsoft Visio.

  • Нажать кнопку OK.

Нюансы использования VBA-редактора в стороннем приложении

После включения "раннего связывания" при объявлении переменной относящейся к приложению MS Visio необходимо указывать префикс Visio.

' объявление переменной va, относящейся к приложению Visio
Dim va As Visio.Application
' передача переменной va ссылки на приложение Visio
Set va = GetObject(, "Visio.Application")

При объявлении переменных, относящихся к приложению Visio следует указывать соответствующий префикс !

В объектных моделях приложений MS Excel и MS Visio встречаются одноименные объекты. Например в обоих приложениях встречается объект Shape. В MS Visio понятие Cells относится к свойству содержащемуся в ячейке таблицы свойств Visio, а в MS Excel понятие Cells относится к диапазону, относящемуся к ячейке Excel.

У одноименных объектов в разных приложениях могут отличаться их свойства и/или относящиеся к ним методы. Это может стать причиной ошибок. Использование префикса позволит избежать путаницы какой именно объект вы имеете в виду!

В дальнейшем вы можете осуществлять программный контроль над документом MS Visio из VBA-редактора стороннего приложения. Или после отладки кода вставить его уже в VBA-редактор приложения Visio, префиксы относящиеся к приложению Visio будут отброшены автоматически.

Выполнить ввод кода в другом приложении используя "" с MS Visio.

⚠️
раннее связывание
Некорректное отображение кириллических символов
Автоматическое завершение вводимого текста в VBA-редакторе
Вызов окна управления используемыми библиотеками
Добавление библиотеки Visio Type Library