![]() |
Форум visio.getbb.ru | О форумах Библиотека | Частые вопросы | Литература | Склад материалов Visio Navigator | Blog | Полезные ссылки | О сайте История Visio | Продукты Visio |
Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д. |
Основой программирования в Visio является объектная модель. В виде картинки доступна объектная модель Visio 2002.
В каждой новой версии обычно приводятся перечни удаленных и появившихся вновь объектов, свойств методов.
Обычно для каждой версии создается свой SDK (Software Development Kit), в котором можно получить наиболее точные сведения. Адреса для загрузки:
Visio 2013 SDK download
Visio 2016 SDK download
22.02.2021  Using the CALLTHIS function in Visio David Parker.
10.12.2019 плейлист VISIO+VBA: Практика Vigil. Видео
10.12.2019 плейлист VISIO+VBA: Теория Vigil. Видео
07.06.2019 Локализация и разделители в Visio Геннадий Туманов.
31.07.2018  Enhancing the Built-In Containers in Visio David Parker.
10.12.2016  Opening an MS Access form from a Visio shape David Parker.
07.07.2015  Deleting Visio Shapes Programmatically Chris Roth.
21.05.2013  Getting the Name of Glued Connection Points David Parker.
28.08.2012  Checking a Visio Shape for Cell Errors David Parker.
14.03.2011  How to Run VBA Macros from a Ribbon Button in Visio 2010 David Parker.
20.04.2010  Controlling the pencil mode programmatically David Parker.
02.11.2009  New Enumerations for Visio 2010 Visimation.
03.08.2009  Re-opening Default Stencils David Parker.
20.05.2009  VBA Class Property Generator Chris Roth.
17.01.2009  Visio Viewer Developer Reference Released David Parker.
25.09.2008 Введение в автоматизацию Visio Геннадий Туманов. Вводная статья из запланированной серии статей о Visio и автоматизации. Определяется предметная область для данной серии, приводится предполагаемый перечень статей.
25.09.2008 Программирование в Visio Геннадий Туманов. Из серии статей об автоматизации. Создание первой программы в Visio. Объектная модель и способы идентификации шейпов. Пример программы получения каталога трафарета.
17.05.2008  Detect Sub-selected Shapes Programmatically Chris Roth.
25.02.2008  Edit Visio Masters Programmatically…the Right Way! Chris Roth.
01.01.2008  Visio tips & tricks for Interaction Designers Martijn van Welie.
17.05.2007  VBA Macro Security Chris Roth.
13.09.2006  Create Visio Flowcharts Programmatically Chris Roth.
22.09.2004  Visio Development Top Five Performance Tips Mai-lan. (англ.) Пять главных советов разработчику по повышению производительности
22.09.2004  Top Ten Things to Know When Using the Visio 2003 ActiveX Control Mai-lan. (англ.) Десять основных причин использовать Visio 2003 ActiveX Control
01.01.2002 Использование редактора Visual Basic в Visio 2002 неизвестный.
01.01.1900  Visio Enumerations John Goldsmith.
Как из Visio из процедуры на VBA получить доступ к листу в книге Excel?
Как из Visio из процедуры на VBA получить доступ к листу в книге Excel?
Так же интересует обратная проблема
Генерация файла Excel из Визио
Sub ReadExcel()
Dim ExcelObject As Object
Set ExcelObject = CreateObject("Excel.Application")
ExcelObject.Workbooks.Add ' Добавляем новую книгу
ExcelObject.Workbooks.Open FileName:="C:\Work\Opis.xls" ' Открываем файл
ExcelObject.Visible = True ' делаем excel видимым
ExcelObject.Range("A1", "A1").Value = "Test:"
ExcelObject.Range("A1", "A1").HorizontalAlignment = 1
ExcelObject.Range("A1", "A1").VerticalAlignment = 2
ExcelObject.Range("A1", "A1").WrapText = 1
' ExcelObject.Quit ' для закрытия excel
End Sub
Соответственно можно только открыть какой-то файл или только создать пустую книгу. Остальные команды и форматы записи управления Excelем можно узнать используя запись макросов в самом Excel, а затем посмотрев текст в редакторе VBA.
Как определить размер (длину в мм) текстовой строки?
Подскажите, как определить размер (длину в мм) текстовой строки, а не размер шейпа в котором она написна.
Нужно для функции на VBA.
На основе примера из документации:
Sub Text_width()
Dim shpObj As Visio.Shape
Set pagsObj = ThisDocument.Pages
Set pagObj = pagsObj.Item(1)
Set selectObj = ActiveWindow.Selection
Set shpObj = ActiveWindow.Selection.Item(1)
shpObj.Text = "Text here" 'пишем текст в фигуру или оставляем
shpObj.AddSection visSectionUser 'добавляем раздел
shpObj.AddRow visSectionUser, visRowUser + 0, 0 'добавляем строку
Set celObj = shpObj.Cells("User.Row_1") 'назначаем ячейку
celObj.Formula = "TEXTWIDTH(TheText)" 'забиваем формулу
TextWTH = celObj.Result(visMillimeters) 'забираем результат
MsgBox TextWTH, , "Text width" 'показываем результат
End Sub
Как из скрипта можно установить единицу измерения?
Есть какая то заморочка с дюймами... вообще хочу работать с см, поэтому меняю для странички в Page setup inches на cm все вроде ок..
Потом, при расстановке фигур по страничке не могу разобраться в чем идет расчет, например:
elements(0).SetBegin x / 2.54, (2 + Kcell_total(0) / step) / 4.54
при значении Kcell_total(0)=4241, x=2 начало получается расположенным в точке (2;4,5) - каким образом.... не могу понять и попутно как из скрипта можно установить единицу измерения для pages или для page..
Единица измерения переключается масштабом
ActivePage.PageSheet.Cells("PageScale").Formula = "1 cm"
ActivePage.PageSheet.Cells("DrawingScale").Formula = "1 cm"
переведет в см, а
ActivePage.PageSheet.Cells("PageScale").Formula = "1 in"
ActivePage.PageSheet.Cells("DrawingScale").Formula = "1 in"
переключит в дюймы.
Но вводите данные Вы все равно в дюймах, поэтому (2дюйма)/2.54 дает 2 см и отстоит на 2 клеточки от края листа, если единицу измерения установили см. (по Y Вы не сообщили значение step).
Короче, видеть Вы будете в см, а вводить в дюймах.