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

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

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Создание таблицы
СообщениеДобавлено: 08 авг 2011, 09:13 
Не в сети

Зарегистрирован: 14 фев 2010, 12:08
Сообщений: 9
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Во общем требуется создать таблицу. Таблицу составляю из текстовых полей.
1. Столбцы фиксированной ширины, сроки изменяемой в зависимости от строк текста. Последующие строки должны автоматически сдвигаться вниз.
2. Так же таблица не должна расплываться и смешаться при изменении масштаба.
3. При копировании на другую страницу таблица должна садиться на то же место на листе.
Удалось добиться 2 и 3 с помощью вставки в поля Shape Transform - Width, Heidth, PinX, PinY значений типа GUARD(XX mm/ThePage!PageScale*ThePage!DrawingScale). Но вот 1 пункт в принципе удалось добиться с помощью вставки в поле Shape Transform - Heidth TEXTWIDTH(TheText) и сдвигать последующие строки вниз. Но вот совместить все 3 пункта сразу не получается.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 13 авг 2011, 00:47 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
я делал так, текстовые поля одной строки я группировал. например имею строки из 4 столбцов,

в полях Sheet.1, Sheet.2, Sheet.3, Sheet.4 в Shape Transform пишу
Код:
Height =TEXTWIDTH(TheText)
LocPinY = Height

Width, Heidth, PinX, PinY каждого шейпа должны иметь значения типа =GUARD(XX mm/ThePage!PageScale*ThePage!DrawingScale)

при группировке создали шейп Sheet.5. у этой фигуры в разделе Shape Transform -

Код:
Height=Guard(Max(Sheet.1!Height,Sheet.2!Height,Sheet.3!Height,Sheet.4!Height))
LocPinY = Height


создаем таким же макаром столько строк сколько нам надо

например группа sheet.10 содержит поля Sheet.6, Sheet.7, Sheet.8, Sheet.9, будет "прилипать" к низу группы sheet.5 если написать формулу в разделе ShapeTransform:
Код:
LocPinY = Guard(Sheet.5!PinY-Sheet.5!Height)

например группа sheet.15 содержит поля Sheet.11, Sheet.12, Sheet.13, Sheet.14, аналогично
Код:
LocPinY = Guard(Sheet.10!PinY-Sheet.10!Height)


наделать нужное количество строк и сгруппировать в единую группу содержащую нужное количество строк.
PinX, PinY этой единой группы должны иметь значения типа
Код:
=GUARD(XX mm/ThePage!PageScale*ThePage!DrawingScale)

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 16 авг 2011, 01:22 
Не в сети

Зарегистрирован: 14 фев 2010, 12:08
Сообщений: 9
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
я делал так, текстовые поля одной строки я группировал. например имею строки из 4 столбцов,

в полях Sheet.1, Sheet.2, Sheet.3, Sheet.4 в Shape Transform пишу
Height[/hil] =TEXTWIDTH(TheText)
LocPinY = Height
Width, Heidth, PinX, PinY
Width, Heidth, PinX, PinY каждого шейпа должны иметь значения типа =GUARD(XX mm/ThePage!PageScale*ThePage!DrawingScale)

Немного непонятно, что нужно прописать в ячейке.
Surrogate писал(а):
при группировке создали шейп Sheet.5.

То ли у меня глюк с визио 2010. Но при объединении текстовых полей видимая их часть находится не там где сам блок


Вложения:
.PNG
.PNG [ 2.33 Кб | Просмотров: 12161 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 26 авг 2011, 13:58 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
что-то я на мудрил с советом, где надо и где не надо писать
Цитата:
=GUARD(XX mm/ThePage!PageScale*ThePage!DrawingScale)

а какой размерности должна быть таблица ? количество строк и столбцов …

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 03 авг 2012, 00:47 
Не в сети
Постоянный участник

Зарегистрирован: 02 авг 2012, 16:39
Сообщений: 57
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Ну я тут вообще лузер и как бы вообще ни чёго ни понял.
Объясните пожалуйста где можно посмотреть операторы которые вы используете, ибо начинаю с нуля и для меня ваша аброкодабра просто тёмный лес.
Немного знаком с VBA в Exle но тут другое. Вы кидаетесь друг в друга описаниями свойств чего угодно, повторяю, выходит такая фигня как в анекдоте про секретаршу блондинку.
Мужики я не блондин сто процентов. Дайте ссыль, что почитать как называется это всё и с чем его едят.
Сурогат вопрос: " я понимаю все разные авторские права, но блин интересно"
Посмотрел Вашу форму очень заинтересовало, но как сделать свою и под свою задачу?
Ни скрою, уделал форму как бог черепаху, в итоге так и вышло, данные мои в форме а на "картинке" такая лабуда.
Сам в Визио не знаток и сталкиваюсь изредка, но задело за живое. Очень прошу откликнуться.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 03 авг 2012, 20:15 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 939
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 127

Добавить очки репутацииУменьшить очки репутации
в визио есть так называемый ShapeSheet - у каждой фигуры(объекта) таблица свойств. все св-ва и функции описаны в хелпе начиная с визио 2007 на русском. ищи, читай, смотри примеры


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 24 окт 2012, 13:48 
Не в сети
Новичок

Зарегистрирован: 17 апр 2012, 18:04
Сообщений: 25
Очков репутации: 6

Добавить очки репутацииУменьшить очки репутации
Тема животрепещущая. Для меня было открытием, что визио не умеет работать с таблицами. Ни в каком виде! =( Вероятнее всего разработчики решили: "Если есть возможность вставить лист Excel в виде объекта (кстати, какого? OLE?), то отдельный инструментарий по работе с таблицами ни к чему!" Есть ли у форумчан опыт работы с подобными объектами из кода VBA? Скажем, требуется добавить такой объект на страницу и заполнить его значениями из ShapeData выделенных шейпов.

_________________
F1, ObjectBrowser и Artberg Вам в помощь!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 24 окт 2012, 14:09 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
вставка может быть как ОЛЕ или как неформатированный текст
у меня есть такой опыт :) делал экспорт данных в спецификацию из экселя
алгоритм работы такой
1. происходит считывание ячеек с экселя и данные заносятся в несколько массивов
2. в заранее подготовленный мастер, в шейпы прописывается значения из массивов
только надо поискать на старом харде…
в ветке viewtopic.php?p=1694#p1694, добавлен макрос использующий заполенение (аналогом кода 1 из этого сообщения) таблицы, подготовленной кодом 2.

делал сам, недавно наткнулся на такое решение по считыванию с ячеек экселя
Код:
' Код1
' Основная программа: переносит данные из листа Excel в массивы VBA,
'------------------------------
'Массивы для хранения данных Excel
  Dim ind() As Integer
  Dim tip() As String
  Dim conn() As Integer
  Dim func() As String
  Dim comm() As String
  Dim ip() As String
  Dim ipx() As String
'Определение размерности и перенос данных в массивы
Dim imax As Integer
Dim i As Integer
i = 2
Do While Not IsEmpty(Worksheets("Лист1").Cells(i, 1))
  i = i + 1
Loop
  imax = i - 1
ReDim ind(imax)
ReDim tip(imax)
ReDim conn(imax)
ReDim func(imax)
ReDim comm(imax)
ReDim ip(imax)
ReDim ipx(imax)
For i = 0 To imax - 1
  ind(i) = Worksheets("Лист1").Cells(i + 2, 1).Value
  tip(i) = Worksheets("Лист1").Cells(i + 2, 2).Value
  conn(i) = Worksheets("Лист1").Cells(i + 2, 3).Value
  func(i) = Worksheets("Лист1").Cells(i + 2, 4).Value
  comm(i) = Worksheets("Лист1").Cells(i + 2, 5).Value
  ip(i) = Worksheets("Лист1").Cells(i + 2, 6).Value
  ipx(i) = Worksheets("Лист1").Cells(i + 2, 7).Value
Next

мой код на рисование таблицы из 30 строк и 9 столбцов
Код:
' Код2
Sub Draw_Table()
Dim Mast As Master
Dim ololo As Shape
Dim ooo As Window
Dim x As Integer
Dim y As Integer
Dim r As Shape
Dim cn As String
Dim rn As String
Const rh = 0.31496063
Dim xc(9) As Single
xc(0) = 0
xc(1) = 0.787401575 ' ширина 1-го столбца в дюймах
xc(2) = 5.905511811 ' ширина 2-го столбца в дюймах
xc(3) = 8.267716535 ' ширина 3-го столбца в дюймах
xc(4) = 9.645669291 ' ширина 4-го столбца в дюймах
xc(5) = 11.41732283 ' ширина 5-го столбца в дюймах
xc(6) = 12.20472441 ' ширина 6-го столбца в дюймах
xc(7) = 12.99212598 ' ширина 7-го столбца в дюймах
xc(8) = 13.97637795 ' ширина 8-го столбца в дюймах
xc(9) = 15.5511811 ' ширина 9-го столбца в дюймах
n = 1
Dim rect As Shape
Dim rw As Shape
Dim rs As Selection
Dim piny As String
piny = "=guard(0 mm)"
Set ooo = ActiveWindow
For y = 1 To 30
Set rs = Nothing
Set rw = ActiveWindow.Shape.DrawRectangle(0, 0, 0, 0)
rnm = "pos" & y
rw.Name = rnm
ActiveWindow.Selection.ConvertToGroup
rw.OpenDrawWindow.Activate
Set ooo = ActiveWindow

For x = 1 To 9
tn = y & "." & x
tx = xc(x - 1)
bx = xc(x)
ty = 0 + rh * (y - 1)
by = 0 + rh * (y)
Set rect = ooo.Shape.DrawRectangle(tx, ty, bx, by)
rect.Style = "None"
rect.CellsSRC(visSectionObject, visRowXFormOut, visXFormLocPinY).FormulaU = "Height*1"
rect.CellsSRC(visSectionParagraph, 0, visSpaceLine).FormulaU = "8 mm"
rect.AddSection visSectionUser
rect.AddRow visSectionUser, visRowLast, visTagDefault
rect.CellsSRC(visSectionUser, 0, visUserValue).FormulaU = "=user.row_1.prompt*INT(TEXTHEIGHT(TheText,Width)/8 mm)*8 mm"
rect.CellsSRC(visSectionObject, visRowText, visTxtBlkVerticalAlign).FormulaU = "=if(height=8 mm,1,0)"
rect.CellsSRC(visSectionObject, visRowText, visTxtBlkTopMargin).FormulaU = "0 pt"
rect.CellsSRC(visSectionObject, visRowText, visTxtBlkBottomMargin).FormulaU = "0 pt"
rect.Name = tn
rect.Text = y & "." & x
rect.CellsSRC(visSectionUser, 0, visUserPrompt).FormulaU = "if(strsame(shapetext(thetext),"" ""),0,1)"
Next x
Dim tex As String
ooo.Close
Application.ActiveWindow.Selection.UpdateAlignmentBox
hrow = "=guard(max(sheet." & n + 1 & "!user.row_1,sheet." & n + 2 & "!user.row_1,sheet." & n + 3 & "!user.row_1,sheet." & n + 4 & "!user.row_1,sheet." & n + 5 & "!user.row_1,sheet." & n + 6 & "!user.row_1,sheet." & n + 7 & "!user.row_1,sheet." & n + 8 & "!user.row_1,sheet." & n + 9 & "!user.row_1))"
If n > 10 Then piny = "=guard(sheet." & n - 10 & "!piny-sheet." & n - 10 & "!height)"
rw.CellsSRC(visSectionObject, visRowXFormOut, visXFormHeight).FormulaU = hrow
rw.CellsSRC(visSectionObject, visRowXFormOut, visXFormLocPinY).FormulaU = "Height*1"
rw.CellsSRC(visSectionObject, visRowXFormOut, visXFormPinY).FormulaU = piny
n = n + 10
Next y
End Sub

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 24 окт 2012, 17:50 
Не в сети
Новичок

Зарегистрирован: 17 апр 2012, 18:04
Сообщений: 25
Очков репутации: 6

Добавить очки репутацииУменьшить очки репутации
Спасибо за ответ! Меня безусловно пугает программное рисование таблицы. Я присмотрюсь к вставке на лист OLE объекта. Только как к нему обратиться? Подсказка в виде записи макроса тут не работает - печалька!

_________________
F1, ObjectBrowser и Artberg Вам в помощь!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 24 окт 2012, 18:12 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 939
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 127

Добавить очки репутацииУменьшить очки репутации
ну вроде к нему обращаешься как к любому шейпу, дальше вроде указатель лежит в поле Object, а потом по нему ползаешь уже с помощью объектной модели скажем экселя (если это экселевский ОЛЕ объект)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 27 янв 2020, 12:59 
Не в сети

Зарегистрирован: 27 янв 2020, 11:46
Сообщений: 3
Использую Visio c: 2007
Уровнь квалификации: средний
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Уважаемые ГУРУ. Уже давно адаптировал свой Visio 2007 к своим рабочим чертежам по маркшейдерскому делу. Но вот при создании топоосновы приходится пересчитывать координаты точек из СК-42 в координаты Visio и выносит их на лист вручную. Подскажите, как и можно ли данные координаты, номера и высотные отметки точек из таблицы пересчета Excel "перенести" из этой таблицы сразу на лист Visio? То есть при "связывании листа Excel с листом Visio эти точки и их цифровые характеристики автоматом появлялись в чертеже Visio???
Спасибо.


Вложения:
Plan.vsd [45 Кб]
Скачиваний: 165
Excel to Visio.xls [24.5 Кб]
Скачиваний: 191
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Создание таблицы
СообщениеДобавлено: 27 янв 2020, 15:24 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Конечно, можно. Только наверное не при связывании, а несколько позже.
Либо сделать для этогго макрос, который нарисует все точки, либо специальный шейп, который будет воспринимать координаты из данных. Во втором случае можно обойтись без макросов, но понадобится ручная операция - типа, "перетащить" все нужные строки данных из окна внешних данных на лист (одним махом).
И для простоты не мешало бы переформатировать данные в Excel. Сейчас они у Вас размещены для удобной работы. А можно сделать на них ссылки с другого листа, формат которого будет более удобен для импорта. И уже этот лист использовать как входные данные для Visio.
Вот немного похожий пример, как это делается без программирования:
https://visioport.ru/blog/index.php/pri ... ya-sobytij
И да, если возникнут еще вопросы, то лучше задавать их в отдельном топике в соответствующем разделе ("Программирование" или "ShapeSheet"). К теме создания таблиц этот вопрос как-то не клеится.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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



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

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


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

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