All Forums
 Категория Visio
 Форум Вопросы и ответы
 как вытащить данные фигуры?
Author Previous Topic Topic Next Topic  

DArk

Russia
10 Posts

Posted - 04/17/2008 :  10:46:23
как запихать в фигуру данные я разабрался с помощью макросов, но у меня есть необходимость потом посчитать количество элементов и данные которые туда были запиханы сравнить для расчёта количества элементов по схеме как это можно сделать?

з.ы. понимаю что вопрос глупый но блин в англицкой справке ваще нихрена не понятно да и ВБ мне не очень знаком

зараннее всем спс

Tumanov

Russia
1198 Posts

Posted - 04/17/2008 :  15:45:42
Ну, если разобрались, как запихать, то с остальным будет проще.
Нужно перебрать всю коллекцию шейпов на странице, для каждого шейпа посмотреть имя или имя мастера (Вы ведь наверное не все сплошняком пересчитывать будете), из нужных шейпов выбрать данные и просуммировать.
Go to Top of Page

DArk

Russia
10 Posts

Posted - 04/22/2008 :  07:33:09
как запихать это в 100 раз проще это нажать кнопку записать макрос и все действия записываются 8о))
а как для подсчёта вытащить пользовательские данные?
я не могу записать макрос по вытаскиванию данных...(((

я уже откудато с форума или с сайта взял макрос который тупо считает шейпы

Sub ttt()
s1 = ""
For i = 1 To ActivePage.Shapes.Count
s1 = s1 + "Name= " + ActivePage.Shapes(i).name
s1 = s1 + " Id= " + Str(ActivePage.Shapes(i).ID) + vbCrLf
Next
ActivePage.Shapes(1).Text = s1
End Sub

а как его заставить проверять данные которые я записываю ??

intPropRow2 = vsoShape1.AddRow(visSectionProp, visRowLast, visTagDefault)
vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsLabel).FormulaU = """#210;#232;#239;"""
vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsType).FormulaU = "0"
vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsFormat).FormulaU = ""
vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsLangID).FormulaU = "1049"
vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsCalendar).FormulaU = ""
vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsPrompt).FormulaU = ""
vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsValue).FormulaU = """#208;#224;#236;#224;"""
vsoShape1.CellsSRC(visSectionProp, intPropRow2, visCustPropsSortKey).FormulaU = ""
Application.EndUndoScope UndoScopeID1, True

у меня проблемы с вб, чё надо дописать что бы он проверял "shape dada" => "Prop.Row_1" ??

Edited by - DArk on 04/22/2008 08:03:16
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 04/22/2008 :  15:59:55
К сожалению, я не очень понимаю вопрос :( Не знаю, что значит в данном случае "проверить" данные.
Давайте напишу, как достать значение из строки Shape Data.
Судя по типу данных, Вы заносите туда текстовую строку. В этом случае при выборке данных нужно убирать лишние кавычки в начале и в конце.
Чтобы достать текст из Prop.Row_1 шейпа sh нужно выполнить
Rezultat = sh.Cells("Prop.Row_1").Formula
Для отбрасывания кавычек используется Replace. Значит будет
Rezultat = Replace(sh.Cells("Prop.Row_1").Formula, Chr(34), "")
Если подставить это в указанный выше макрос, то будет примерно так
Sub ttt()
s1 = ""
For i = 1 To ActivePage.Shapes.Count
s1 = s1 + Replace(ActivePage.Shapes(i).Cells("Prop.Row_1").Formula, Chr(34), "") + vbCrLf
Next
ActivePage.Shapes(1).Text = s1
End Sub
Макрос выберет данные из первой строки Shape Data всех шейпов на странице и выведет все это в первый шейп в качестве текста.
Однако, если в каком-либо шейпе не будет Shape Data, то макрос вылетит по ошибке. Поэтому лучше добавить хотя бы простенькую защиту. Например, так
Sub ttt()
s1 = ""
For i = 1 To ActivePage.Shapes.Count
On Error Resume Next
s1 = s1 + Replace(ActivePage.Shapes(i).Cells("Prop.Row_1").Formula, Chr(34), "") + vbCrLf
On Error GoTo 0
Next
ActivePage.Shapes(1).Text = s1
End Sub
Go to Top of Page

DArk

Russia
10 Posts

Posted - 04/29/2008 :  11:54:27
большое спс именно то что я хотел 8о))
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)