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

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

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Вставка свойства Prop в поле
СообщениеДобавлено: 18 ноя 2021, 19:42 
Не в сети

Зарегистрирован: 20 ноя 2021, 17:01
Сообщений: 16
Использую Visio c: 2019
Уровнь квалификации: Shapesheet, VBA начальный уровень
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Доброго времени суток) кто подскажет как можно вставить текст в текстовое поле фигуры, там где расположен курсор. ПРОГРАММНО.
Содержимое спрятано под спойлер ↓
Спойлер:
Код:
Dim vsoDataRecordset As Visio.DataRecordset
    Dim intCount As Integer
   
    intCount = Visio.ActiveDocument.DataRecordsets.Count
    Set vsoDataRecordset = Visio.ActiveDocument.DataRecordsets(intCount)
   
    ActiveWindow.Select Application.ActiveWindow.Selection(1), visSubSelect
    Application.ActiveWindow.Selection.LinkToData vsoDataRecordset.ID, 1, False
   
    Dim Prop As String
    Dim Prop1 As String
        Prop1 = InputBox("Введите номер ячейки ", "PROP", "")
        Prop = "Prop._VisDM_F" & Prop1
       
    Dim UndoScopeID2 As Long
    UndoScopeID2 = Application.BeginUndoScope("Задать поле текста")
    ActiveWindow.Select Application.ActiveWindow.Selection(1), visSubSelect
    Dim vsoCharacters3 As Visio.Characters
    Set vsoCharacters3 = Application.ActiveWindow.Selection.Item(1).Characters
    vsoCharacters3.Begin = 1000
    vsoCharacters3.End = 1000
    vsoCharacters3.AddCustomFieldU Prop, visFmtNumGenNoUnits
    Application.ActiveWindow.Selection.Item(1).CellsSRC(visSectionCharacter, 0, visCharacterLangID).FormulaU = 1033
    Application.ActiveWindow.Selection.Item(1).CellsSRC(visSectionCharacter, 0, visCharacterFont).FormulaU = "FONTTOID(" & Chr(34) & "GOST type A" & Chr(34) & ")"
    Application.EndUndoScope UndoScopeID2, True

    'Restore diagram services
    ActiveDocument.DiagramServicesEnabled = DiagramServices

End Sub
конкретно интересуют эти две строки
vsoCharacters3.Begin = 1000
vsoCharacters3.End = 1000
текст вставляется в конец блока,т.е. отсчитывает от начала 1000 символов, но мне нужно вставлять текст там где "мигает" курсор.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 18 ноя 2021, 20:09 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Единственная проблема - определить позицию курсора в тексте. На мой взгляд, проблема не решаемая. Visio не предназначен для таких задач.
А что именно и когда Вы хотите вставлять? Может быть можно обойтись какими-то другими методами. Например, заранее разбить текст на фрагменты, а в шейпе только склеивать их. Или вместо курсора вставить спецсимвол, а потом программно находить его и заменять на новый текст. Ну или еще что-то похожее...


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 18 ноя 2021, 20:12 
Не в сети

Зарегистрирован: 20 ноя 2021, 17:01
Сообщений: 16
Использую Visio c: 2019
Уровнь квалификации: Shapesheet, VBA начальный уровень
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Единственная проблема - определить позицию курсора в тексте. На мой взгляд, проблема не решаемая. Visio не предназначен для таких задач.
А что именно и когда Вы хотите вставлять? Может быть можно обойтись какими-то другими методами. Например, заранее разбить текст на фрагменты, а в шейпе только склеивать их. Или вместо курсора вставить спецсимвол, а потом программно находить его и заменять на новый текст. Ну или еще что-то похожее...

В таком случае идея со спецсимволом мне больше всего подходит)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 18 ноя 2021, 20:23 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
Роман писал(а):
но мне нужно вставлять текст там где "мигает" курсор
если просто мигает курсор, то попробуйте
Код:
ActiveWindow.SelectedText.Begin
Дополнено позднее: тема имеет отношение к разделу Проектирование инженерных систем в Visio? нет, перемещено в раздел Программирование.
Это продолжение обсуждения из ветки? таки да

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


Последний раз редактировалось Surrogate 26 ноя 2021, 18:44, всего редактировалось 2 раз(а).
отредактировано "Обновлено"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 18 ноя 2021, 21:18 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Оказывается Visio и это может :)
Цитата:
если просто мигает курсор, то попробуйте
ActiveWindow.SelectedText.Begin

Тогда как-то вот так
Код:
Sub ttt()
    n = ActiveWindow.SelectedText.Begin
    Set shp = ActiveWindow.SelectedText.Shape
    Set vsoCharacters1 = shp.Characters
    vsoCharacters1.Begin = n
    vsoCharacters1.End = n
    vsoCharacters1.Text = "вставка"
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 18 ноя 2021, 22:08 
Не в сети

Зарегистрирован: 20 ноя 2021, 17:01
Сообщений: 16
Использую Visio c: 2019
Уровнь квалификации: Shapesheet, VBA начальный уровень
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Оказывается Visio и это может :)

Огромное спасибо)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 18 ноя 2021, 22:48 
Не в сети

Зарегистрирован: 20 ноя 2021, 17:01
Сообщений: 16
Использую Visio c: 2019
Уровнь квалификации: Shapesheet, VBA начальный уровень
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Тогда как-то вот так

Теперь почему то вставляет данные в начало строки, но не где курсор.ахаха)


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

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

Добавить очки репутацииУменьшить очки репутации
Значит по каким-то причинам не может определить ActiveWindow.SelectedText
n остается в нуле, поэтому вставляет в начало.
Тут надо бы посмотреть конструкцию шейпа и понаблюдать за процессом селектирования.


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

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

Добавить очки репутацииУменьшить очки репутации
У меня вот так работает


Вложения:
st.gif
st.gif [ 63.71 Кб | Просмотров: 614 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 19 ноя 2021, 21:16 
Не в сети

Зарегистрирован: 20 ноя 2021, 17:01
Сообщений: 16
Использую Visio c: 2019
Уровнь квалификации: Shapesheet, VBA начальный уровень
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
У меня вот так работает

Дело в том что я вставляю не просто текст, а данные из таблицы ексель.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 19 ноя 2021, 21:22 
Не в сети
Administrator

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

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

Ну вот, там и надо искать. По пути от Excel до SelectedText.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 20 ноя 2021, 14:39 
Не в сети

Зарегистрирован: 20 ноя 2021, 17:01
Сообщений: 16
Использую Visio c: 2019
Уровнь квалификации: Shapesheet, VBA начальный уровень
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Ну вот, там и надо искать. По пути от Excel до SelectedText.


Dim Prop As String
Dim Prop1 As String
Prop1 = InputBox("Введите номер ячейки ", "PROP", "")
Prop = "Prop._VisDM_F" & Prop1
n = ActiveWindow.SelectedText.Begin

ActiveWindow.Select Application.ActiveWindow.Selection(1), visSubSelect
Dim vsoCharacters3 As Visio.Characters
Set vsoCharacters3 = Application.ActiveWindow.Selection.Item(1).Characters
vsoCharacters3.Begin = n
vsoCharacters3.End = n
vsoCharacters3.AddCustomFieldU Prop, visFmtNumGenNoUnits
у меня конкретно эта строчка(выделено красным) вставляет текст, а не vsoCharacters3.Text="".Не могу разобраться почему переменная n обнуляется(


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 20 ноя 2021, 15:19 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
РОМАН писал(а):
у меня конкретно эта строчка(выделено красным) вставляет текст
ваша строчка вставляет поле, в примере Геннадия вставляется текст.
РОМАН писал(а):
ActiveWindow.Select Application.ActiveWindow.Selection(1), visSubSelect
вы выделяете текст фигуры расположенной внутри группы ?

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 20 ноя 2021, 15:21 
Не в сети

Зарегистрирован: 20 ноя 2021, 17:01
Сообщений: 16
Использую Visio c: 2019
Уровнь квалификации: Shapesheet, VBA начальный уровень
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
вы выделяете текст фигуры расположенной внутри группы ?

нет, располагаю курсор в нужном месте.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 20 ноя 2021, 15:29 
Не в сети
Content manager
Content manager
Аватара пользователя

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

добавьте строчки с объявлением переменных
как было в коде Геннадия
Tumanov писал(а):
Код:
n = ActiveWindow.SelectedText.Begin
    Set shp = ActiveWindow.SelectedText.Shape
и эту фигуру определим
Код:
Set Sh = ActiveWindow.Select (Application.ActiveWindow.Selection(1), visSubSelect)
и после сделать вывод
Код:
Debug.Print shp.ID, Sh.ID

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 20 ноя 2021, 15:32 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Выбросьте из файла все, кроме одного шейпа и макроса и выложите его здесь.
Так потратится гораздо меньше времени, чем на гадания.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка текста
СообщениеДобавлено: 20 ноя 2021, 17:05 
Не в сети

Зарегистрирован: 20 ноя 2021, 17:01
Сообщений: 16
Использую Visio c: 2019
Уровнь квалификации: Shapesheet, VBA начальный уровень
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Выбросьте из файла все, кроме одного шейпа и макроса и выложите его здесь.


Вложения:
Комментарий к файлу: Вот собственно тот самый макрос
EXinVS.vsdm [16.75 Кб]
Скачиваний: 47
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 20 ноя 2021, 17:18 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Цитата:
Вот собственно тот самый макрос

А толку-то...
Я файл спрашивал, чтобы получить то же самое окружение. Ошибка ведь именно во взаимодействии с окружением. Потому что, если я сам буду пытаться его создать, то оно точно будет не таким, значит и поведение другое. Да и время нужно тратить, чтобы создать все это.
А в этом файле ни рекордсета, ни данных в шейпе. Бесполезный файл.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 20 ноя 2021, 17:41 
Не в сети

Зарегистрирован: 20 ноя 2021, 17:01
Сообщений: 16
Использую Visio c: 2019
Уровнь квалификации: Shapesheet, VBA начальный уровень
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Цитата:
Вот собственно тот самый макрос

А толку-то...
Я файл спрашивал, чтобы получить то же самое окружение. Ошибка ведь именно во взаимодействии с окружением. Потому что, если я сам буду пытаться его создать, то оно точно будет не таким, значит и поведение другое. Да и время нужно тратить, чтобы создать все это.
А в этом файле ни рекордсета, ни данных в шейпе. Бесполезный файл.

Сохраните их вместе в корне диска С, файлы уже связаны.


Вложения:
EXinVS.vsdm [22.09 Кб]
Скачиваний: 47
Recordset.xlsx [8.34 Кб]
Скачиваний: 50
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка свойства Prop в поле
СообщениеДобавлено: 20 ноя 2021, 17:59 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
А вот это уже интересно!
У Вас не работает, а у меня те же файлы работают!?


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

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



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

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


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

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