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

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

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: в открытие в ворде рисунка визио
СообщениеДобавлено: 18 дек 2019, 12:09 
Не в сети

Зарегистрирован: 17 дек 2019, 13:26
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
последний код при запуске приводит к зависанию ворда. Я закоментил строчки "Of.Object.Save", "Of.Object.Close" и заработало. Конечно теперь последний рисунок не закрывает но это нестрашно. Может у меня код не успевает внести изменения как уже начинается команда "Close" и поэтому виснет? Главное Сейчас вроде хорошо работает. Большое спасибо:)


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

Зарегистрирован: 17 дек 2019, 13:26
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Не подскажите ещё по одному вопросу: если я хочу создать переменную "х=Of.Object.Pages(1).Shapes(1)" которую буду передавать в другую подпрограмму на обработку, то как мне записывать тип получившейся переменной. Т.е. будет как-то так sub ttt(x As ...)


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

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

Добавить очки репутацииУменьшить очки репутации
Если на конце .Shapes(1), значит это явно будет шейп.
Значит As Visio.Shape


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

Зарегистрирован: 17 дек 2019, 13:26
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Это я в продолжение прошлой задачи про макрос в Ворде. Сейчас нет возможности проверить, но вроде пробовал и не получалось т.к. это макрос не в визио а в Ворде а он не знает такого типа (As Visio.Shape).


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

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

Добавить очки репутацииУменьшить очки репутации
Ну так, не объявляйте тип вообще. VBA сам разберется.


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

Зарегистрирован: 17 дек 2019, 13:26
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Работает, спасибо. Я почему-то думал, что объявлять тип обязательно необходимо.
Ещё один вопрос:
Шейп содержит текст (например "3456"). Надо 3-й символ текста (в данном случае "5") заменить на символ "8" и выделить данный символ красным цветом (если можно заливкой или цветом текста). Как это возможно сделать?


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

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

Добавить очки репутацииУменьшить очки репутации
В Visio есть возможность записи макросов. Включаем запись, делаем все вручную и изучаем, что записалось.
Задача как раз подходит для такого режима.
Код:
    Dim vsoCharacters1 As Visio.Characters
    Set vsoCharacters1 = Application.ActiveWindow.Page.Shapes.ItemFromID(1).Characters
    vsoCharacters1.Begin = 2
    vsoCharacters1.End = 3
    vsoCharacters1.Text = "8"

    Dim UndoScopeID3 As Long
    UndoScopeID3 = Application.BeginUndoScope("Font Color")
    Dim vsoCharacters2 As Visio.Characters
    Set vsoCharacters2 = Application.ActiveWindow.Page.Shapes.ItemFromID(1).Characters
    vsoCharacters2.Begin = 2
    vsoCharacters2.End = 3
    vsoCharacters2.CharProps(visCharacterColor) = 0#
    Application.EndUndoScope UndoScopeID3, True

Я немного прокомментирую.
В Visio есть два способа добраться до текста: попроще - свойство .Text, а больше возможностей через .Characters.Text. Здесь требуется разный формат для разных фрагментов текста, значит только через Characters.
В первой части отсчитываем заменяемый символ по позиции. От 2 до 3. Потом вставляем туда новый текст - 8.
Во второй части точно так же выбирается нужный фрагмент и через CharProps(visCharacterColor) изменяется его цвет.
Использовать UndoScope совершенно не обязательно.


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

Зарегистрирован: 17 дек 2019, 13:26
Сообщений: 13
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Заменил одну строчку на:
Код:
Set vsoCharacters1 = ActivePage.Shapes(1).Characters

После этого заработало. Спасибо, в том числе и за пояснения)


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

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

Добавить очки репутацииУменьшить очки репутации
Обычно приходится менять не одну строчку, а гораздо больше.
Запись макросов далеко не оптимальна. Но главное - она помогает понять, как нужно действовать.


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

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



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

Сейчас этот форум просматривают: Yandex [bot] и гости: 11


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

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