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

Ввод формулы в шейп-листе для множества шейпов разом
http://visio.getbb.ru/viewtopic.php?f=6&t=1575
Страница 1 из 1

Автор:  kukhmaster [ 03 май 2020, 11:30 ]
Заголовок сообщения:  Ввод формулы в шейп-листе для множества шейпов разом

Добрый день!

Есть необходимость разом для множества выделенных шейпов (линии и текст) прописать =CALLTHIS("ThisDocument.goXLS") в шейп-листе - ивентс - ивентДблКлик

сам в макросах не силен. искал на форуме и в интернете макросы для похожих целей - не нашел.

Товарищи, подскажите!

Автор:  Tumanov [ 03 май 2020, 11:57 ]
Заголовок сообщения:  Re: Ввод формулы в шейп-листе для множества шейпов разом

Вот это должно работать
Код:
Sub ttt()
    For Each shp In ActiveWindow.Selection
        shp.CellsSRC(visSectionObject, visRowEvent, visEvtCellDblClick).FormulaU = "CALLTHIS(""ThisDocument.goXLS"")"
    Next
End Sub

Автор:  kukhmaster [ 03 май 2020, 12:20 ]
Заголовок сообщения:  Re: Ввод формулы в шейп-листе для множества шейпов разом

Tumanov
в очередной раз спасибо огромное!

понимаю, что уже наглею, но если несложно) а что тут изменить, чтобы можно было еще галочки "Использовать относительный путь для гиперссылки" в окне гиперссылки убрать для выделенных шейпов?

Изображение

Автор:  Tumanov [ 03 май 2020, 13:11 ]
Заголовок сообщения:  Re: Ввод формулы в шейп-листе для множества шейпов разом

Вот с этим сложнее.
Дело в том, что эта галочка действует в пределах экранной формы, а не во внутренних данных документа. Результатом является то, что в ячейку записывается не абсолютный, а относительный путь. Не признак, а просто немного другой результат.
То есть для выполнения требования придется выбирать текст из ячейки, вырезать из него относительный адрес и опять записывать в ту же ячейку.
Если что-то пойдет не так, то можно испортить гиперссылки.
Но в принципе можно попробовать вот такой модифицированный макрос (опять же для селектированных шейпов).
Код:
Sub ttt()
    For Each shp In ActiveWindow.Selection
        shp.CellsSRC(visSectionObject, visRowEvent, visEvtCellDblClick).FormulaU = "CALLTHIS(""ThisDocument.goXLS"")"
        s = shp.CellsSRC(visSectionHyperlink, visRow1stHyperlink, visHLinkAddress).ResultStr(0)
        pos = InStrRev(s, "\")
        s1 = Mid(s, pos + 1, Len(s) - pos)
        shp.CellsSRC(visSectionHyperlink, visRow1stHyperlink, visHLinkAddress).FormulaU = Chr(34) & s1 & Chr(34)
    Next
End Sub

Автор:  kukhmaster [ 03 май 2020, 14:20 ]
Заголовок сообщения:  Re: Ввод формулы в шейп-листе для множества шейпов разом

Tumanov
Спасибо!

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