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

Форум по вопросам применения и программирования в Visio
Текущее время: 28 май 2017, 22:23

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


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


Размещение файлов в формате vsd (а не vsdx/vsdm), увеличивает вероятность ответа стремительным домкратом !!!



Начать новую тему Ответить на тему  [ Сообщений: 113 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 20:34 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 45
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Цитата:
а ты Const pt = "c:\Users\xXx\Documents\" так и оставил ? или подставил путь к своей папке ?

свой написал
и Worksheets("запрос").Range("E18").Value этот тоже свой

кстати у Меня ещё один вопрос как правильно обращаться к только что нарисованному шейпу, а то Я как то топорно это делаю
Код:
appVisio.ActiveWindow.Page.Shapes.ItemFromID(e).CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = "THEMEGUARD(RGB(0,0,0))"

где "е" это номер шейпа который Я считаю каждый раз когда рисую шейп, типо нарисовал квадатик е = е+1, Я понимаю что это явно не правильно, но ничего другого Я не придумал :oops:

зы это прога в екселе из екселя рисует в висио и хочет сохранить результаты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 20:42 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
Вот так:
Код:
appVisio.ActiveWindow.Selection.PrimaryItem
' Или
appVisio.ActiveWindow.Selection (1)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 20:48 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
DArkadiy писал(а):
свой написал
хорошо. а папка то уже существует ? если нет. но правильно ошибку выдает!
ты по прежнему шейпы по одному добавляешь ? не сделал смарт-шейпа ?
если по одному то для прибавлении ID шейпа вполне корректно.
а шейп объявлять так, когда рисуешь его
Код:
Dim sh As Shape
' .....
Set sh = appVisio.ActiveWindow.Page.DrawRectangle(1, 1, 3, 2)
sh.CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = "THEMEGUARD(RGB(0,0,0))"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 20:51 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
А правильней обращаться так:
Код:
Dim oSH As Object ' пишешь в начале процедуры

' Каждый раз когда рисуешь новый шейп, делай так:
Set oSH = appVisio.ActivePage.DrawRectangle(1, 4, 4, 1)

' и обращайся уже к объектной переменной oSH
oSH.CellsSRC(visSectionObject, visRowFill, visFillForegnd).FormulaU = "THEMEGUARD(RGB(0,0,0))"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 20:52 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 45
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
хорошо. а папка то уже существует ? если нет. но правильно ошибку выдает!

папка существует, но не существует папки которую нужно создать с названием из ячейки


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 20:57 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
DArkadiy писал(а):
но не существует папки которую нужно создать с названием из ячейки
значит придется создавать самому
FileSystem Object в помощь !


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 20:58 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
http://www.script-coding.com/WSH/FileSystemObject.html#6.

Код:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\")
Set NewFolder = Folder.SubFolders.Add("New Folder")


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 21:05 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 45
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Код:
Const pt = "F:\заказы\"
cname = Worksheets("запрос").Range("E18").Value
ccont = Worksheets("запрос").Range("C18").Value
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CreateFolder ("F:\заказы\" & cname)
pth = pt & cname ' путь к папке
nm = Replace(Date, ".", "_") & ccont & ".vsd" ' имя файла
vd.SaveAs pth & "\" & nm

папку создал, но на последнюю строчку ругнулся и не сохранил


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 21:21 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
А с переменной vd все нормально? как ты ей присваиваешь значение?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 21:30 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 45
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
=) Я не знаю что такое переменная vd
в итоге работает вот так
Код:
Const pt = "F:\заказы\"
cname = Worksheets("запрос").Range("E18").Value
ccont = Worksheets("запрос").Range("C18").Value
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FolderExists("F:\заказы\" & cname) Then
pth = pt & cname ' путь к папке
nm = Replace(Date, ".", "_") & " " & ccont & ".vsd" ' имя файла
Else
FSO.CreateFolder ("F:\заказы\" & cname)
End If
appVisio.ActiveDocument.SaveAsEx pth & "\" & nm, visSaveAsWS + visSaveAsListInMRU


сначала проверяет есть ли папка, если есть то создаёт файл, если нет то создаёт папку и файл
теперь осталось сохранить туда же екселевский файл и всё будет хорошо


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 10 ноя 2016, 21:35 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
=) Я не знаю что такое переменная vd

:D :D :D

Вот же последняя строка твоего кода двумя комментами выше:
Код:
vd.SaveAs pth & "\" & nm

Ну хорошо что заработало.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 11 ноя 2016, 08:49 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
DArkadiy писал(а):
Я не знаю что такое переменная vd
зато я прекрасно знаю, откуда у нее ноги растут.
Surrogate в сообщении #10514 писал(а):
Set va = GetObject(, "visio.application")
Set vd = va.ActiveDocument
я взял код из другой ветки сегодняшнего обсуждения, там тоже управляем визио программно из под экселя
DArkadiy писал(а):
appVisio.ActiveDocument.SaveAsEx pth & "\" & nm, visSaveAsWS + visSaveAsListInMRU
DArkadiy, молодец ! Растешь на глазах Изображение


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 11 ноя 2016, 16:58 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 45
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Спасибо, за уже оказанную неоценимую помощь.
теперь Я начинаю всё это дело прилизывать, и хочу расставлять смарт шейпы размеров из стандартного набора "размеры техника"
Я видел в том мануале что то про коннекторы, но не уверен, что это именно то что нужно


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 16 ноя 2016, 19:58 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 45
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
пытаюсь вставить смартшейп размера
записал макросом как вставляю смартшейп
Код:
    Application.ActiveWindow.Page.Drop Application.Documents.Item("Ðàçìåðû (òåõíèêà).vss").Masters.ItemU("Horizontal"), 5.07874, 124.173228


заменяю Application на appVisio
запускаю...
Изображение
очевидно, что я что то делаю не так :wall:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 16 ноя 2016, 20:02 
Не в сети
Ветеран

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

Добавить очки репутацииУменьшить очки репутации
А можно без кракозябр строчку кода вставить? :D А то непонятно.
А впрочем понятно, это имя трафарета.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 16 ноя 2016, 20:12 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 45
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
кракозябры это название файла по русски, это форум его коверкает.
но косяк я свой нашёл, нужно быть внимательней и заменять все Application на appVisio, а то я первый заменил, а второй оставил


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 16 ноя 2016, 20:13 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
DArkadiy писал(а):
заменяю Application на appVisio
в обоих случаях ? Application.ActiveWindow.Page.Drop Application.Documents.Item("Ðàçìåðû (òåõíèêà).vss").Masters.ItemU("Horizontal"), 5.07874, 124.173228
DArkadiy писал(а):
кракозябры это название файла по русски, это форум его коверкает.
не в форуме дело, сейчас скопировал аналогичный код содержащий кириллицу, вставил в тело письма в MS Outlook - те же крокозябры!
Alex_ST в сообщении #10160 писал(а):
у тебя до сих пор не пофиксен баг работы буфера обмена, возникший ещё при русификации VISTA…

Вот РАДИКАЛЬНЫЙ СПОСОБ, помогающий практически в 100% случаев избавиться от "кракозябр":
Surrogate в сообщении #10164 писал(а):
руки не доходят снова пройти по этому радикальному пути . обхожусь по рабоче-крестьянски - вставляю сначала код из VBA IDE в шейп Visio, а из него уже без крокозябр в любое место


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 16 ноя 2016, 21:03 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 45
Использую Visio c: 2013
Очков репутации: 0

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

наверное это по тому что у меня стоит ХР... а не виста =)

с изменением размеров шейпа вроде справился


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 17 ноя 2016, 11:27 
Не в сети
Новичок

Зарегистрирован: 09 ноя 2016, 12:04
Сообщений: 45
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
смартшейпы вставляются куда нужно
теперь нужно изменить размер
в принципе зписаный макросом и изуродованный по предыдущему принципу код работает
Код:
appVisio.ActiveWindow.Selection.PrimaryItem.CellsSRC(visSectionObject, visRowXForm1D, vis1DEndX).FormulaU = "627 mm"


но мне нужно получить что то типо этого
Код:
appVisio.ActiveWindow.Selection.PrimaryItem.CellsSRC(visSectionObject, visRowXForm1D, vis1DEndX).FormulaU = (x1 + (sh_r / 25.4))

а такой уже не работает... :wall:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: рисование в висио по команде из EXEL
СообщениеДобавлено: 17 ноя 2016, 11:35 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3250
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
DArkadiy писал(а):
но мне нужно получить что то типо этого
Код:
appVisio.ActiveWindow.Selection.PrimaryItem.CellsSRC(visSectionObject, visRowXForm1D, vis1DEndX).FormulaU = (x1 + (sh_r / 25.4))
да, обычно так не прокатывает.
но можно ввести промежуточную переменную. вычислить ее значение и подставить в формулу.
Код:
dim EX as Single

EX = (x1 + (sh_r / 25.4))
appVisio.ActiveWindow.Selection.PrimaryItem.CellsSRC(visSectionObject, visRowXForm1D, vis1DEndX).FormulaU = EX


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

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



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

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


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

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