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

Форум по вопросам применения и программирования в Visio
Текущее время: 21 сен 2018, 06:41

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Русские символы при передаче из кода VBA в ShapeSheet
СообщениеДобавлено: 28 фев 2014, 16:00 
Не в сети

Зарегистрирован: 18 фев 2014, 18:49
Сообщений: 3
Использую Visio c: 2006
Отрасль: Телевидение
Должность: инженер-конструктор
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Камрады, приветствую!
Давно уже наблюдаю эффект, когда некоторые символы русского алфавита некорректно отображаются после вычислений в VBA в Visio 2010. К примеру, создана страница с названием "657420.Э3". В дебаггере, в окне "Watches", создаю "watch" ActivePage и вижу корректное значение "657420.Э3" в столбце "Value". Однако, если скопировать эту строку в стандартную программу Блокнот, например, то эта строка уже вставляется как "657420.Ý3".

Раньше это проблем не вызывало, но сегодня, вдруг, получил Run-time error "В формуле обнаружена циклическая ссылка" при попытке вставить упомянутое имя страницы в формулу ShapeSheet из VBA. Источником проблемы является именно эта злополучная "Ý", она же "Э".

Кто-то что-то может сказать на эту тему?


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
у меня были подобные проблемы, русские символы заменялись на вьетнамские! причем даже не из VBA, в некоторых шейпах заполнение отдельных ячеек в шейпшите производилось средствами самого шейпшита, с помощью SETF. Это все происходило не на моем компе.

практическим путем выяснил: у меня визио 2010 на котором стоял только английский языковой пакет, а у моих коллег только русский. так вот когда они начинали править мои документы вылезали вьетнамские крокозябры :)
когда я поставил себе и русский и английский языковой пакеты, проблема устранилась. На визио 2003 ее также не было


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: 04 мар 2014, 13:13 
Не в сети
Ветеран

Зарегистрирован: 06 май 2013, 13:01
Сообщений: 746
Откуда: Россия
Использую Visio c: 2013
Очков репутации: 18

Добавить очки репутацииУменьшить очки репутации
Для копипаста - можно попробовать переключать язык на русский. Редактор VBA не понимает юникода, в отличие от самого VBA.
По поводу вычислений. Не понял, что под ними подразумевается. Рекомендую использовать ChrW вместо Chr, но не думаю, что этот совет имеет хоть какое-то отношение к теме.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Русские символы при передаче из кода VBA в ShapeSheet
СообщениеДобавлено: 06 мар 2014, 03:23 
Не в сети

Зарегистрирован: 18 фев 2014, 18:49
Сообщений: 3
Использую Visio c: 2006
Отрасль: Телевидение
Должность: инженер-конструктор
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
у меня были подобные проблемы, русские символы заменялись на вьетнамские! причем даже не из VBA, в некоторых шейпах заполнение отдельных ячеек в шейпшите производилось средствами самого шейпшита, с помощью SETF. Это все происходило не на моем компе.

практическим путем выяснил: у меня визио 2010 на котором стоял только английский языковой пакет, а у моих коллег только русский. так вот когда они начинали править мои документы вылезали вьетнамские крокозябры :)
когда я поставил себе и русский и английский языковой пакеты, проблема устранилась. На визио 2003 ее также не было


Спасибо! У меня интерфейс Visio на русском. Полагаю, это значит, что у меня стоит русский пакет? Если нет, то как проверить?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re:
СообщениеДобавлено: 06 мар 2014, 03:27 
Не в сети

Зарегистрирован: 18 фев 2014, 18:49
Сообщений: 3
Использую Visio c: 2006
Отрасль: Телевидение
Должность: инженер-конструктор
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Qwertiy писал(а):
Для копипаста - можно попробовать переключать язык на русский. Редактор VBA не понимает юникода, в отличие от самого VBA.
По поводу вычислений. Не понял, что под ними подразумевается. Рекомендую использовать ChrW вместо Chr, но не думаю, что этот совет имеет хоть какое-то отношение к теме.


Под вычислением подразумевается, например, получение строки с именем страницы через ActivePage.Name с последующим прибавлением к нему строк с фрагментами формулы, которая в итоге будет записана в ячейку ShapeSheet.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Русские символы при передаче из кода VBA в ShapeSheet
СообщениеДобавлено: 06 мар 2014, 07:24 
Не в сети
Administrator

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


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Русские символы при передаче из кода VBA в ShapeSheet
СообщениеДобавлено: 06 мар 2014, 09:48 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
чуток модифицировал код
KoGG писал(а):
теперь можно переименовать страницы с русскими буковками :)
Код:
Sub ChangeNames()
Dim pg As Page ' объявляем страницу
Dim sh As Integer ' объявляем счетчик символов
Dim ch As String ' объявляем текущий символ
Dim nm As String ' объявляем имя листа
Dim nw As String ' объявляем исправленное имя листа
nw = ""
For x = 1 To ActiveDocument.Pages.Count  ' перебор листов
Set pg = ActiveDocument.Pages(x)
nm = pg.Name ' узнали корявое имя листа
For sh = 1 To Len(nm) ' посимвольный перебор корявого имени
ch = Mid(nm, sh, 1) ' определяем текущий символ
iUni = AscW(ch) ' определяем Unicode-код текущего символа
        Select Case iUni
             Case 168, 184, 192 To 255  ' 168 - Ё, 184 - ё,
                                        ' диапазон 192 - 223 все остальные заглавные русские буквы
                                        ' диапазон 224 - 255 все остальные строчные русские буквы
                nw = nw & (Chr(iUni))  ' добавляем к исправленному имени исправленого листа символ соответствующий Unicode-коду текущего символа
             Case Else
             nw = nw & ch ' добавляем к исправленному имени исправленого листа текущий символ без изменений
        End Select
Next sh ' переходим к следующему символу
pg.Name = nw ' исправляем корявое имя листа
Next x ' переходим к следующему листу
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Русские символы при передаче из кода VBA в ShapeSheet
СообщениеДобавлено: 06 мар 2014, 12:25 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
DRV писал(а):
Спасибо! У меня интерфейс Visio на русском. Полагаю, это значит, что у меня стоит русский пакет? Если нет, то как проверить?
это проверяется в окне Параметры Визио, вкладка Язык
Изображение
Чтоб попасть в это окно нужно в меню Файл, выбрать пункт Параметры


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

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



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

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


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

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