Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 15:02

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 100 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 04 апр 2018, 13:09 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
А Data Visualizer не хочешь попробовать?

Он это должен уметь (рисовать из Excel, и проставлять свойства)
IMHO пока немного сыроват, но вообще работает, и кастомные фигуры тоже можно использовать.

Кстати ( привет Surrogate :D ) на русском вообще видео про него кто делал? А то тул крутой, а мужики-то и не знают :D
Дополнено позднее:
Surrogate в сообщении от 05 мар 2019 писал(а):

А так, согласно моему опыту, обычно все кто хочет автоматизировать, просто хочет делать не что нужно, а что интересно :mrgreen:
(то есть, с практической точки зрения, проще нарисовать руками)

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Последний раз редактировалось Surrogate 15 апр 2019, 02:36, всего редактировалось 1 раз.
Добавлена ссылка на русскоязычное видео о надстройке «Визуализатор данных»


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 04 апр 2018, 13:52 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Вот так?:


Вложения:
Test_auto_draw_VBA_v2.vsd [33 Кб]
Скачиваний: 140

_________________
GitHub
Yandex-диск с набором полезных утилит
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 04 апр 2018, 14:14 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Цитата:
А так, согласно моему опыту, обычно все кто хочет автоматизировать, просто хочет делать не что нужно, а что интересно
(то есть, с практической точки зрения, проще нарисовать руками)

Есть и другой опыт.
Самый убедительный - раскрывал структуру изделия в виде дерева (из PDM). Сотни компонентов в одном изделии. Руками за такое никто не взялся бы. А картинка очень наглядная, особенно при отслеживании изменений.
Ближе к теме - в проектировании автоматики вентиляции. За бугром это как-то очень развито. Народ использует и доволен.
Еще мощные картинки были с сетевыми потоками. Тоже вручную не особо прорисуешь.
Но, согласен, в этих примерах используется не универсальный визуалайзер. Везде специфические построители. Под задачу.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 04 апр 2018, 14:28 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Есть и другой опыт.
Самый убедительный - раскрывал структуру изделия в виде дерева (из PDM). Сотни компонентов в одном изделии. Руками за такое никто не взялся бы. А картинка очень наглядная, особенно при отслеживании изменений.
Ближе к теме - в проектировании автоматики вентиляции. За бугром это как-то очень развито. Народ использует и доволен.
Еще мощные картинки были с сетевыми потоками. Тоже вручную не особо прорисуешь.
Но, согласен, в этих примерах используется не универсальный визуалайзер. Везде специфические построители. Под задачу.


Согласен, перегнул палку :)
Если есть конкретный заказчик/проект, лучше решать именно с привязкой к его задаче (выключатели там будут, серверы, вентили, или еще что), а не в "общем случае".
Визуалайзер на все случаи жизни сделать тяжко, это все равно что задача для ИИ "сделай чтобы было красиво"...

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 24 апр 2018, 09:51 
Не в сети
Новичок

Зарегистрирован: 19 мар 2018, 14:10
Сообщений: 45
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
После отпуска решил продолжить освоение VBA..))
хочу в своей UserForm сделать ComboBox (список), который брал бы данные из файла Excel.
и далее, исходя из выбранного значения, в соседнее текстовое поле формы вносил соответствующее значение другого столбца из того же файла Excel.
Грубо говоря, к примеру, есть файл Excel, где есть несколько столбцов, среди которых есть столбец "фамилия" и столбец "имя".
Необходимо в список формы импортнуть данные столбца "фамилия" и в текстовое поле подставить соответствующее значение столбца "имя".
Все фамилии и имена уникальны, не повторяются.
+, если это как то отдельно настраивается, в списке формы осуществить подстановку значения по первым введенным символам.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 24 апр 2018, 14:20 
И, заодно, как сделать так, чтобы после вызова UserForm окно самого visio оставалось активным?
т.е. чтобы и окно формы и страницу Visio можно было редактировать параллельно.


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 24 апр 2018, 14:33 
Не в сети
Новичок

Зарегистрирован: 19 мар 2018, 14:10
Сообщений: 45
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Гость писал(а):
И, заодно, как сделать так, чтобы после вызова UserForm окно самого visio оставалось активным?
т.е. чтобы и окно формы и страницу Visio можно было редактировать параллельно.


Сам нашел..))
через свойство формы ShowModal


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 26 апр 2018, 16:35 
Не в сети
Новичок

Зарегистрирован: 19 мар 2018, 14:10
Сообщений: 45
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
Ну так вот - AddShapesFromStensil.zip :o

Нашел Ваше творение:
Find&Replace Addon For MS Visio
Прикольно сделано 8-)
Можете поделиться кодом, хотя бы частью?
Хочу также реализовать у себя альтернативный стандартному поиску в visio, чтобы искать определенные значения в определенных данных фигур.
с "точным" совпадением, чтобы, к примеру, при поиске "Иванов", не находилось "Иванова"
если получится, то с поиском фигуры по нескольким данным
ну и отображением всех возможных найденных значений, по аналогии с поиском Excel "найти все".


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 26 апр 2018, 18:12 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
А эту тему смотрел?
http://visio.getbb.ru/viewtopic.php?f=6&t=1024

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 03 май 2018, 12:26 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 12 май 2012, 15:16
Сообщений: 122
Очков репутации: 13

Добавить очки репутацииУменьшить очки репутации
nbelyh писал(а):
на русском вообще видео про него кто делал? А то тул крутой, а мужики-то и не знают :D
пока наши не успели снять русскоязычное видео, смотрим видео от David Parker
Встроенное видео спрятано под спойлер ↓ Прямая ссылка на видео
Спойлер:
phpBB [youtube]


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 15 май 2018, 12:55 
Не в сети
Новичок

Зарегистрирован: 19 мар 2018, 14:10
Сообщений: 45
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
А эту тему смотрел?
http://visio.getbb.ru/viewtopic.php?f=6&t=1024

почитал, много букв, но почитал..))
твое творение там не раскрывается

для начала пробую вывести данные по всем фигурам в debug:
Код:
Private Sub Test()
Dim oShapes As Object

For Each oShapes In ActiveDocument.Pages.Item(1).Shapes
    Debug.Print "Name: "; oShapes.Name; " Text: "; oShapes.Text
    Debug.Print "NetworkName: "; oShapes.Cells("Prop.Network_Name").ResultStr(visNone)
    Debug.Print "Manufacturer: "; oShapes.CellsU("Prop.Manufacturer").ResultStr(visNone)
Next
End Sub

1. чем отличается .Cells от .CellsU?
2. что за параметр "visNone" и какие еще варианты могут быть?
3. как лучше сравнивать, через "like" или "StrComp"?
4. ну и натолкните на мысль, как вывести в useform результат всех найденных значений с возможностью перехода по тому или иному пункту (как в Excel "найти все").


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 15 май 2018, 14:50 
Hamit писал(а):
1. чем отличается .Cells от .CellsU?
CellsU это для т.н. "универсальных имен" ячеек. Cells для "локальных"
Name and NameU

Hamit писал(а):
2. что за параметр "visNone" и какие еще варианты могут быть?
аргумент свойства ResulStr
9rey писал(а):
или так .ResultStr(0)
или так .ResultStr(visNone)
:)
ибо в хелпе по ResultStr сказано:
Цитата:
Passing a zero (0) is sufficient for getting the value of text string cells.
вариантов много в вышеуказанном описании к ResulStr есть список VisUnitCodes Enumeration (Visio)


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 15 май 2018, 15:06 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
1. чем отличается .Cells от .CellsU?
Первое использует локальные имена ячеек, а второе универсальные.
2. что за параметр "visNone" и какие еще варианты могут быть?
https://msdn.microsoft.com/ru-ru/office/aa342161
3. как лучше сравнивать, через "like" или "StrComp"?
Смотря что тебе надо. Можно еще регулярки использовать. http://www.script-coding.com/WSH/RegExp.html
4. ну и натолкните на мысль, как вывести в useform результат всех найденных значений с возможностью перехода по тому или иному пункту (как в Excel "найти все").
В двух словах не напишешь. Нужно код писать. Время будет, может что то накропаю.
Мое творение. Код в файле - Form1.vb. Вряд ли оно тебе поможет. Ну попробуй разобраться.


Вложения:
FInd_Replace.zip [737.63 Кб]
Скачиваний: 88

_________________
GitHub
Yandex-диск с набором полезных утилит
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 18 май 2018, 01:03 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Вот сделал примерчик:

Изображение

Скачать FindShapes.zip
https://yadi.sk/d/qbpj9WI9d2eqF

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 11 июн 2018, 09:34 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Улучшенный вариант:

Изображение

А это вариант с компонентом ListView. В Win7x32 работает. В Win10x64 не работает(по крайней мере без танцев с бубном).

Изображение

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 22 авг 2018, 14:00 
Не в сети
Новичок

Зарегистрирован: 19 мар 2018, 14:10
Сообщений: 45
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Hamit писал(а):
После отпуска решил продолжить освоение VBA..))
хочу в своей UserForm сделать ComboBox (список), который брал бы данные из файла Excel.
и далее, исходя из выбранного значения, в соседнее текстовое поле формы вносил соответствующее значение другого столбца из того же файла Excel.
Грубо говоря, к примеру, есть файл Excel, где есть несколько столбцов, среди которых есть столбец "фамилия" и столбец "имя".
Необходимо в список формы импортнуть данные столбца "фамилия" и в текстовое поле подставить соответствующее значение столбца "имя".
Все фамилии и имена уникальны, не повторяются.
+, если это как то отдельно настраивается, в списке формы осуществить подстановку значения по первым введенным символам.


В продолжение данного вопроса↑
В дебрях интернета нашел статейку:
https://gregmaxey.com/word_tip_pages/populate_userform_listbox_or_combobox.html
Где среди прочего описывается возможность подобного импорта
1. Late Binding
2. Early Binding
3. DAO

пока пробую через Early Binding, застрял на ошибке "application-defined or object-defined error 1004", но пока не про это.
Прошу посоветовать, каким образом лучше "брать" данные для ListBox/ComboBox из Excel?
Заранее спасибо


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 22 авг 2018, 15:31 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
Ура! Народ из отпусков возвращается :)

Брать данные из Excel, имея в распоряжении только Visio, проще всего с использованием VBA (при условии, что Excel установлен)
Late Binding/Early Binding- это мимо кассы, это про другое.

Наверное самый простой код который я могу придумать (допустим что A1:A10 - положение данных в файле Excel "C:\Path\To\The\File.xlsx", на первом листе):
Код:
comboBox1.List = GetObject("C:\Path\To\The\File.xlsx").Worksheets(1).Range("A1:A10").Value

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 23 авг 2018, 15:15 
Не в сети
Новичок

Зарегистрирован: 19 мар 2018, 14:10
Сообщений: 45
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
nbelyh писал(а):
Наверное самый простой код который я могу придумать (допустим что A1:A10 - положение данных в файле Excel "C:\Path\To\The\File.xlsx", на первом листе):
Код:
comboBox1.List = GetObject("C:\Path\To\The\File.xlsx").Worksheets(1).Range("A1:A10").Value


А как "закрыть" файл/объект?
После вызова процедуры и закрытию окна формы в диспетчере задач висит процесс Excel
А при последующем открытии любого другого Excel, или даже нового, обычными средствами Windows, Excel предлагает восстановить открытый из VBA файл.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 24 авг 2018, 00:38 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
У меня вроде Excel не подвисает... Может быть, подвисание с данным кодом не связано? (то есть, его вызывает что-то другое?)
Так что точно не могу сказать, в чем проблема. Весь код ниже:
Код:
Private Sub UserForm_Initialize()
    ComboBox1.List = GetObject("C:\Path\To\The\File.xlsx").Worksheets(1).Range("A1:A10").Value
End Sub

Вообще, чтобы не подвисал, достаточно не оставлять ссылок на объекты Excel.

Можно попробовать явно его закрывать:
Код:
Private Sub UserForm_Initialize()
    Set workbook = GetObject("C:\Path\To\The\File.xlsx")
    ComboBox1.List = workbook.Worksheets(1).Range("A1:A10").Value
    workbook.Application.Quit
End Sub

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Атоматизация рисования схема visio через VBA
СообщениеДобавлено: 27 авг 2018, 16:14 
Не в сети
Новичок

Зарегистрирован: 19 мар 2018, 14:10
Сообщений: 45
Использую Visio c: 2010
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Ну и в догонку:
Как автоматически определить "конец столбца"?
пока такой скрипт:
Код:
Private Sub Data_from_Excel()
Dim oWorkbook As Excel.Workbook
Dim ArrayBS As Variant
Dim lastRow
lastRow = 1072
On Error Resume Next
Set oWorkbook = GetObject("D:\Ðàçíûå îò÷åòû IT\BS_data_from_MC.xlsx")
With oWorkbook
'    lastRow = .Worksheets(1).Cells(Rows.Count, "B").End(xlUp).Row
'    lastRow = .Worksheets(1).Range("B" & Rows.Count).End(xlUp).Row
'    MsgBox lastRow
    ArrayBS = .Worksheets(1).Range("B2:D" & lastRow).Value
'    MsgBox .Worksheets(1).Range("B10").Value
    MsgBox LBound(ArrayBS) & " " & UBound(ArrayBS)
    MsgBox ArrayBS(10, 3)

End With

End Sub


пробую и так:
Код:
lastRow = .Worksheets(1).Cells(Rows.Count, "B").End(xlUp).Row

и так:
Код:
lastRow = .Worksheets(1).Range("B" & Rows.Count).End(xlUp).Row

MsgBox lastRow выдает пустоту
что не так в определении последней строки?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 100 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB