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

Форум по вопросам применения и программирования в Visio
Текущее время: 24 мар 2019, 23:14

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


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


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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Как изменить текст в ячейке?
СообщениеДобавлено: 11 мар 2019, 17:45 
Не в сети
Постоянный участник

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 52
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Здравствуйте! Задам вопрос на который я уже, наверное, знаю ответ (никак), но надеюсь, что есть варианты. В user-defined cell документа создал новое свойство, куда поместил громадный текст - более ляма знаков. Текст этот был получен из свойства DataRecordSet.DataAsXML. Данные были созданы чисто для эксперимента и содержали 10000 строк (такое кол-во вполне может быть). Есть шейпы, которые по определенным правилам и ключам извлекают из этой ячейки данные - работает это очень быстро. Но мне хотелось сделать, чтобы не только извлекать данные из текста, но и модифицировать его, при изменении данных в шейпе. Такое сделать получилось через функции setf и substitute. Беда заключается в том что, функция substitute возвращает мне модифицированный текст, затем этот текст я возвращаю (подменяю) в ячейку документа, и вот эта подмена занимает уже много времени. А теперь вопрос - можно ли менять текст прямо в ячейке документа, не перезаписывая его весь целиком?

PS. Для проверки у шейпа поменяйте только номер контакта.


Вложения:
.vsdm [488.67 Кб]
Скачиваний: 2
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как изменить текст в ячейке?
СообщениеДобавлено: 11 мар 2019, 18:13 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3447
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Information worker
Уровнь квалификации: ShapeSheet, VBA
Machestro писал(а):
Для проверки у шейпа поменяйте только номер контакта
я не осилил.
Изображение
что-то у меня ничего не меняется :wall:


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

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 52
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Понимаю, не очень все объяснил. Первые три поля (позиция место контакт) - они ключевые, по ним извлекаются данные, менялся номер провода и т.д. Но не стоит зацикливаться 6а том что меняется, а что нет. Вопрос в том, можно ли в ячейке документа изменить часть текста, не перезаписывая весь огромный текст


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3447
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Information worker
Уровнь квалификации: ShapeSheet, VBA
Функция Substitute меняет все вхождения по умолчанию!
Если нужно ограничиться заменой только одного вхождения нужно предварительно найти с какого символа начинается интересующее вхождение. Синтаксис примерно такойSUBSTITUTE(<Где ищем>,<Что ищем>,<На что заменяем>,FIND(<Что ищем>,<Где ищем>),0)


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

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 52
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Это я прекрасно понимаю. Опишу по шагам
1. Есть большой текст в ячейке документа
2. Есть Шейп, который по ключам извлекает лишь часть текста.
3. При изменении данных в шейпе (руками) функцией substitute (все это происходит shapesheet шейпа) меняю малую часть огромного текста.
4. Теперь я хочу сохранить измененный текст в ячейку документа и в шейпе пишу похожую формулу SETF(ячейка. Документа, SUBSTITUTE(...))

То есть именно setf меняет текст в ячейке документа, а для этого нужно перезаписывать весь огромный текст. А хочется на прямую из шейпа поменять лишь часть текста документа.
Попробую создать пример по проще


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3447
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Information worker
Уровнь квалификации: ShapeSheet, VBA
Machestro писал(а):
То есть именно setf меняет текст в ячейке документа, а для этого нужно перезаписывать весь огромный текст. А хочется на прямую из шейпа поменять лишь часть текста документа.
часть текста или часть содержимого ячейки с миллионом символов ?
я думаю, что в любом случае будет заменяться все содержимое ячейки будь то с использованием SETF или с VBA.
я так думаю (c)
Machestro писал(а):
знаю ответ (никак)
правильная догадка


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

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 52
Использую Visio c: 2016
Очков репутации: 4

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


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

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



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

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


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

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