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

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

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Вставка текущей даты в ячейку Shapesheet
СообщениеДобавлено: 28 мар 2015, 11:36 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Возникла совершенно нубская проблема. Не могу вставить в ячейку дату программно.
Пример. Надо программно вставить текущую дату и время в ячейку, например - "User.Date".
Вот так, без проблем:
Код:
sh.Cells("User.Date.Value") = "NOW()"

Но так вставляется функция, и она обновляет значение ячейки раз в минуту, что-ли. Это не то. Нужно постоянное значение полученное в момент вставки в ячейку.
А так:
Код:
sh.Cells("User.Date.Value") = NOW

получаю:
Изображение

При чем, если вставить в ячейку "EventXFMod" формулу =SETF(GetRef(User.Date),NOW()), то ячейка "User.Date" получает нужное значение, и все ОК. Но требуется программно.
Крутил, вертел - чего то никак не соображу. :wall:

Вот так работает, но это бред какой то получается:
Код:
sh.Cells("User.Date.Value") = Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now) & Second(Now)

_________________
GitHub
Yandex-диск с набором полезных утилит


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

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

Добавить очки репутацииУменьшить очки репутации
У меня вот такая строка ошибок не выдает
sh.Cells("Prop.Property1") = Now()
Результат, конечно, получается некрасивым - 42091,4737
Но при правильном форматировании превращается в
28.03.2015 11:22:07 (Это в окне Shape Data)
------
И так тоже без ошибок
sh.Cells("User.Row_1.Value") = Now()


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка текущей даты в ячейку Shapesheet
СообщениеДобавлено: 28 мар 2015, 14:06 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 939
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 127

Добавить очки репутацииУменьшить очки репутации
я так делаю
sh.cells("User.Time.Value").result(visdate)=now


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка текущей даты в ячейку Shapesheet
СообщениеДобавлено: 28 мар 2015, 15:17 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
У тебя скорее всего с языками проблема (точка vs. запятая как разделитель дробной части числа - в русском так по умолчанию в региональных настройках в контрол панели).
Посмотри что "Now" в VBA возвращает - оно скорее всего в английской локали.
Когда ты Cells("xxx") = в русской локали пытаешься записать, получаешь "неправильную дробь" (это и в самом деле неправильная дробь, если рассматривать ЭТО как дробь)
Или наоборот. В общем похоже что региональные настройки VBA в Visio не совпадают с региональными настройками самого Visio :D

Cells("xxx") = ... на самом деле эквивалентно Cells("xxx").ResultIU = ... , т.е. ResultIU является свойством объекта Cells по умолчанию

Если ты просто дату в виде строчки хотел, можно то, что "Now" возвращает в кавычки обернуть:
Cells("xxx").Formula = """" & Now & """"

Если ты дату хотел в виде независомом от языка виде, можно ее обернуть в DATETIME() - Visio в таком виде пишет например, если создать проперти с типом "дата":
Cells("xxx").FormulaU = "DATETIME(" & CDbl(Now) & ")"

Да, вот это у тебя скорее всего обломается ("Formula" вместо "FormulaU"), с той же дурацкой ошибкой про дробь:
Cells("xxx").Formula = "DATETIME(" & CDbl(Now) & ")"

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Всем спасибо. Мне подходит вот это:
Цитата:
Если ты просто дату в виде строчки хотел, можно то, что "Now" возвращает в кавычки обернуть:
Cells("xxx").Formula = """" & Now & """"

Насчет региональных настроек, не стал разбираться, может что-то с этим связано.

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка текущей даты в ячейку Shapesheet
СообщениеДобавлено: 28 мар 2015, 16:24 
Не в сети
Ветеран

Зарегистрирован: 21 окт 2011, 12:01
Сообщений: 939
Откуда: г. Екатеринбург
Использую Visio c: 2011
Очков репутации: 127

Добавить очки репутацииУменьшить очки репутации
мне все-таки кажется, что правильнее .Result(visDate) = Now
в этом случае в ячейке хранится именно дата/время в формате визио. именно как нужно программе. и отображение как надо. и работать потом с этой ячейкой можно как с датой. а в примере nbelyh получается формат строки. хотя может для ТСа это и не принципиально.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка текущей даты в ячейку Shapesheet
СообщениеДобавлено: 28 мар 2015, 16:56 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
9rey писал(а):
мне все-таки кажется, что правильнее .Result(visDate) = Now
в этом случае в ячейке хранится именно дата/время в формате визио. именно как нужно программе. и отображение как надо. и работать потом с этой ячейкой можно как с датой. а в примере nbelyh получается формат строки. хотя может для ТСа это и не принципиально.


У меня например потом руками не дает в ШШ менять, если туда значение так прописать..

Вроде сам Visio делает более разумно: DATETIME(42091.0208), это на "Define Custom Properties" -> выбрать тип "Дата".
Т.е. он не дату туда пишет, а формулу DATETIME(xxx.yyyy)

Я бы порекомндовал так же, формулу писать - тогда пользователь сможет форматирование сам задать.

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Что такое аббревиатура ТС? Я понимаю что автор поста, а как расшифровать? :oops:

По теме.
Цитата:
мне все-таки кажется, что правильнее .Result(visDate) = Now

Выдает ошибку(какую именно - уже забыл). Думаю, что действительно что-то с региональными настройками у меня.
Ну и да, в моем данном случае устраивает формат строки.
А меняться значение будет по событию EventDrop, формулой - =SETF(GetRef(User.Date), CHAR(34)&Now()&CHAR(34))

_________________
GitHub
Yandex-диск с набором полезных утилит


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка текущей даты в ячейку Shapesheet
СообщениеДобавлено: 28 мар 2015, 18:10 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
Что такое аббревиатура ТС? Я понимаю что автор поста, а как расшифровать? :oops:

TC = ТопикСтартер (калька с английского)

По поводу даты - вот попросят тебя показывать только месяц и год в дате, да еще и на французском, узнаешь где раки зимуют :D
DATETIME(xxx.yyyy) - рулит.

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Цитата:
По поводу даты - вот попросят тебя показывать только месяц и год в дате, да еще и на французском, узнаешь где раки зимуют :D
DATETIME(xxx.yyyy) - рулит.

Да это понятно!
Если честно, мне не сама дата нужна, а некое уникальное значение. Чего может быть уникальнее даты с секундами?
Не, ну можно конечно по другому заморочиться. Дата и время, по моему, самое простое.
Тем не менее не зря я этот пост писал. Кое-какие нюнсы стали понятнее. :)

_________________
GitHub
Yandex-диск с набором полезных утилит


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

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

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

:D :D


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка текущей даты в ячейку Shapesheet
СообщениеДобавлено: 28 мар 2015, 18:50 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
Ну супер. :D

А Guid не пойдет?
У шейпа есть встроенная фигня для уникальности - Shape.UniqueID

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Ладно вам смеяться! :)
Дату я действительно не мог вставить! Хотя и не она мне нужна была. :oops:
Цитата:
А Guid не пойдет?
У шейпа есть встроенная фигня для уникальности - Shape.UniqueID

А что, Guid действительно уникален? Или как с ID шейпа. Уникальность только в пределах листа и пока шейп не удален? Полезу проверять.

_________________
GitHub
Yandex-диск с набором полезных утилит


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

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

Добавить очки репутацииУменьшить очки репутации
Shishok писал(а):
A что, Guid действительно уникален? Или как с ID шейпа. Уникальность только в пределах листа и пока шейп не удален? Полезу проверять.

Вообще гуид уникален (в пределах этой вселенной) - просто по определению.
Однако, гуиды являются невосполняемым ресурсом, что не может не вызывать тревогу экологов:
http://rsdn.ru/article/mag/200301/GUIDEcology.xml

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Вставка текущей даты в ячейку Shapesheet
СообщениеДобавлено: 28 мар 2015, 20:09 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 534
Использую Visio c: 2008
Очков репутации: 107

Добавить очки репутацииУменьшить очки репутации
Цитата:
Вообще гуид уникален (в пределах этой вселенной) - просто по определению.
Однако, гуиды являются невосполняемым ресурсом, что не может не вызывать тревогу экологов:
http://rsdn.ru/article/mag/200301/GUIDEcology.xml

Класс! Болею за экологов! :D

А вообще, мне Guid очень даже подошел. Жалко что он сам не генерируется при создании шейпа. Ну это мелочь.
И это все уже offtop.

_________________
GitHub
Yandex-диск с набором полезных утилит


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

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



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

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


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

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