Форум пользователей Visio
http://visio.getbb.ru/

2 банальных вопроса
http://visio.getbb.ru/viewtopic.php?f=6&t=1113
Страница 3 из 3

Автор:  lite.fun [ 18 апр 2017, 18:46 ]
Заголовок сообщения:  Re: 2 банальных вопроса

Евгени писал(а):
Подозреваю, речь идёт как раз о его отсутствии :roll:
Да я уж понял :) Просто почему то я фразу про домкрат изначально интерпретировал как указание наоборот не выкладывать файлы .vsd.

Автор:  Surrogate [ 18 апр 2017, 18:49 ]
Заголовок сообщения:  Re: 2 банальных вопроса

lite.fun писал(а):
Ох уж этот ваш форумный юмор
вообще то это из классики
— Дело в том, что… Вы знаете, что такое домкрат?
— Ну, конечно, знаю, оставьте меня в покое…
— Как вы себе представляете домкрат? Опишите своими словами.
— Такой… Падает, одним словом.
— Домкрат падает. Заметьте все. Домкрат стремительно падает.
Евгени писал(а):
Тут есть народ, заставший мамонтов, и с тех пор визио не обновлявший, а .vsdm - новый формат
все верно ! да еще и MS сломал конвертер
и мы из визио 2010 не можем уже открывать эти файлы
Surrogate в сообщении #10225 писал(а):
не далее как позавчера (11.11.2016) я столкнулся с тем, что конвертер на работает
Изображение

Автор:  Shishok [ 18 апр 2017, 19:22 ]
Заголовок сообщения:  Re: 2 банальных вопроса

В процедуре Proba:
Должно быть так:
Код:
Dim nameCell As String: nameCell = "User.Base" & BaseIndex & ".Value" ' нужно писать полное имя ячейки


Процедура EditListValue:

Код:
Public Sub EditListValue(nameCell As String, numValue As Integer, newValue)
' 1 аргумент - имя ячейки для изменения
' 2 аргумент - номер значения для поиска в списке значений (начиная с 1)
' 3 аргумент - новое значение для замены

Const q = """" ' Кавычка
Dim arrList
Dim docSheet As Visio.Shape
Dim visDoc As Visio.Document
Set visDoc = Application.ActiveDocument
Set docSheet = visDoc.DocumentSheet

With docSheet.Cells(nameCell)
     arrList = Split(.ResultStr(""), ";") ' создаем массив значений не из формулы, а из результирующей строки
     arrList(numValue - 1) = newValue ' меняем одно из значений
     .FormulaU = q & Join(arrList, ";") & q  ' создаем строку из значений массива, закавычиваем ее и записываем назад в ячейку
End With

End Sub

Автор:  Shishok [ 18 апр 2017, 21:03 ]
Заголовок сообщения:  Re: 2 банальных вопроса

И в функции ReadListValue тоже поменяй на эту строку:
Код:
arrList = Split(.ResultStr(""), ";") ' создаем массив значений не из формулы, а из результирующей строки

Автор:  lite.fun [ 19 апр 2017, 09:09 ]
Заголовок сообщения:  Re: 2 банальных вопроса

Shishok, огромное спасибо за помощь! Двигаюсь дальше.

Автор:  Surrogate [ 19 апр 2017, 09:15 ]
Заголовок сообщения:  Re: 2 банальных вопроса

Оффтоп:
убедительная просьба - не валить все последующие вопросы, по другим темам в эту ветку Изображение

Автор:  Shishok [ 21 апр 2017, 19:21 ]
Заголовок сообщения:  Re: 2 банальных вопроса

lite.fun. Оказывается у объекта Page есть два метода:

1. GetShapesLinkedToDataRow(DataRecordsetID, DataRowID, ShapeIDs()) - возвращает массив всех фигур на указанной странице, связанной с данными в указанной строке данных в указанном наборе записей данных.

2. GetShapesLinkedToData(DataRecordsetID, ShapeIDs()) - Возвращает массив всех фигур на указанной странице, связанной с данными в указанном наборе записей данных.

Так что для конкретной страницы количество связанных строк можно получить так(используя 2 метод):

Код:
Sub Test_LinkRows()
Dim LinkRowCount As Integer

    LinkRowCount = AllLinkRowCount(1, 3)
    ' первый аргумент в скобках - это порядковый номер подключенного источника данных
    ' второй аргумент в скобках - это порядковый номер страницы документа
    Debug.Print LinkRowCount
End Sub

Private Function AllLinkRowCount(DataRecordsetsItem, PageItem)
Dim DataRecordsetID As Integer, alngShapeIDs() As Long

On Error GoTo ExitLine

With ThisDocument
    DataRecordsetID = .DataRecordsets(DataRecordsetsItem).ID
    .Pages(PageItem).GetShapesLinkedToData DataRecordsetID, alngShapeIDs
    AllLinkRowCount = UBound(alngShapeIDs) + 1
End With

Exit Function

ExitLine:
AllLinkRowCount = 0
End Function

Автор:  lite.fun [ 24 апр 2017, 08:15 ]
Заголовок сообщения:  Re: 2 банальных вопроса

Shishok писал(а):
lite.fun. Оказывается у объекта Page есть два метода:

Shishok, прошлый Ваш метод мне импонирует больше ))) но в любом случае огромное спасибо, уверен еще найдет свое применение!!!

Страница 3 из 3 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/