Использую одни и те же таблицы на разных компьютерах, на одних русский Excel 2003, а на некоторых немецкий 2000. Все вкладки названы русскими именами (символами). Немецкий Excel нормально, работает и с формулами и со ссылками на Листы (которые названы по-русски), нормально отображает имена русских Листов. Но вот макрос, который содержит команду, открывающую определённую вкладку, Sheets("Имя листа").Select не хочет понимать русских имен. И естественно, выдает ошибку.
Понятно, что проще всего переименовать все Листы, так чтобы названия были латиницей. Но хочется найти какой-то изящный выход. Возможно есть решение ссылаться в функции Sheets("Имя листа").Select не на "Имя листа", а например на его какой-то внутренний код, номер или что-то подобное. Как-то ведь функции со ссылками на ячейки в других листах, немецкий эксел понимает.
Подскажите, что-нибудь интересное.
Использую одни и те же таблицы на разных компьютерах, на одних русский Excel 2003, а на некоторых немецкий 2000. Все вкладки названы русскими именами (символами). Немецкий Excel нормально, работает и с формулами и со ссылками на Листы (которые названы по-русски), нормально отображает имена русских Листов. Но вот макрос, который содержит команду, открывающую определённую вкладку, Sheets("Имя листа").Select не хочет понимать русских имен. И естественно, выдает ошибку.
Понятно, что проще всего переименовать все Листы, так чтобы названия были латиницей. Но хочется найти какой-то изящный выход. Возможно есть решение ссылаться в функции Sheets("Имя листа").Select не на "Имя листа", а например на его какой-то внутренний код, номер или что-то подобное. Как-то ведь функции со ссылками на ячейки в других листах, немецкий эксел понимает.
Sheets(2).Select - второй по порядку в книге лист и еще - в VBA в окна проекта замечали наверняка, русское название листа стоит в сковочках, а перед ним еще название типа sheets1? Так это codename листа. По нему тоже можно обращаться. Это имя не зависит от того, как лист назван пользователем и каким является этот лист в книге по счету. Выгляди это обращение так: sheets1.Select, или Лист1.Select, или nnn.Select.
Sheets(2).Select - второй по порядку в книге лист и еще - в VBA в окна проекта замечали наверняка, русское название листа стоит в сковочках, а перед ним еще название типа sheets1? Так это codename листа. По нему тоже можно обращаться. Это имя не зависит от того, как лист назван пользователем и каким является этот лист в книге по счету. Выгляди это обращение так: sheets1.Select, или Лист1.Select, или nnn.Select._Boroda_
Sheets(2).Select - в таком виде у меня на русском Excel 2003 заработало. Т.е. обратился по порядковому номера расположения листа.
codename листов у меня типа: Лист1, Лист2 и т.д. тоже все латиницей, попробовал переименовать на Sheets1, получилось. Но обратиться к этому листу командой Sheets1.Select все равно не получалось, все время ошибка. Формат обращения: nnn.Select тоже выдавал ошибку.
В понедельник буду пробовать на немецком Excel За совет спасибо!
Sheets(2).Select - в таком виде у меня на русском Excel 2003 заработало. Т.е. обратился по порядковому номера расположения листа.
codename листов у меня типа: Лист1, Лист2 и т.д. тоже все латиницей, попробовал переименовать на Sheets1, получилось. Но обратиться к этому листу командой Sheets1.Select все равно не получалось, все время ошибка. Формат обращения: nnn.Select тоже выдавал ошибку.
В понедельник буду пробовать на немецком Excel За совет спасибо!jack_jackson
Сообщение отредактировал jack_jackson - Суббота, 08.02.2014, 14:42
Работает и на русском и на немецком, но только команда Sheets(2).Select . Что моим задачам вполне удовлетворяет. Спасибо Boroda за совет.
Получились такой вот макрос:[vba]
Код
Sub Auto_Close() Sheets(2).Select
Range("S3") = Now Range("S2") = Now
ActiveWorkbook.Save End Sub
[/vba]Выявился один нюанс. Если открыто две книги: одна в которой мой макрос и еще любая другая, то если активна другая книга и пытаешься завершить работу Excel, то возникает либо ошибка (всяческие в зависимости от этой второй книги, например нет листа номер 2, или он защищен и т.д.) либо макрос записывает значения в ячейки S3, S2 в не нужной книге.
Подскажите, как это исправить!
Работает и на русском и на немецком, но только команда Sheets(2).Select . Что моим задачам вполне удовлетворяет. Спасибо Boroda за совет.
Получились такой вот макрос:[vba]
Код
Sub Auto_Close() Sheets(2).Select
Range("S3") = Now Range("S2") = Now
ActiveWorkbook.Save End Sub
[/vba]Выявился один нюанс. Если открыто две книги: одна в которой мой макрос и еще любая другая, то если активна другая книга и пытаешься завершить работу Excel, то возникает либо ошибка (всяческие в зависимости от этой второй книги, например нет листа номер 2, или он защищен и т.д.) либо макрос записывает значения в ячейки S3, S2 в не нужной книге.
Думаю на той немецкой машине нужно включить поддержку юникода, чтоб в коде нормально читалась кириллица.
Да там винда XP какая-то давно ставленая, офис 2000, причем все сугубо лицензионное, дистрибутивов нет и как там добавить поддержку языков не понять.jack_jackson
Ну вот потому код и не находит эти листы по этим каракулям. И думаю в ячейках тоже значения кириллицей не найдёт, если где-то нужно. В общем, нужно чтоб там была читаемая кириллица.
Ну вот потому код и не находит эти листы по этим каракулям. И думаю в ячейках тоже значения кириллицей не найдёт, если где-то нужно. В общем, нужно чтоб там была читаемая кириллица.Hugo
И думаю в ячейках тоже значения кириллицей не найдёт, если где-то нужно.
Тут как раз таки ищет. И стандартный поиск Excel работает и функции разные работают, например ВПР ищет в русском тексте без проблем, и функция ПОИСК ищет, и даже вот такая функция МЕСЯЦ с параметрами (A1&0) работает, где A1="Февраль", ну и другие тоже работают с русским текстом.
И думаю в ячейках тоже значения кириллицей не найдёт, если где-то нужно.
Тут как раз таки ищет. И стандартный поиск Excel работает и функции разные работают, например ВПР ищет в русском тексте без проблем, и функция ПОИСК ищет, и даже вот такая функция МЕСЯЦ с параметрами (A1&0) работает, где A1="Февраль", ну и другие тоже работают с русским текстом.jack_jackson
Сообщение отредактировал jack_jackson - Вторник, 11.02.2014, 21:55
Вы не поняли - код не найдёт. Например find в коде по например слову "например" Или всякие UDF с названием/параметрами кириллицей работать не будут. Как править - я точно не знаю. Включите поддержку юникода для неюникодных программ:
Или может в реестре вот тут нужно поменять и заработает: [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage]"1252"="c_1251.nls" [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Nls\CodePage]"1252"="c_1251.nls" Ну и другие ControlSet'ы посмотрите.
Вы не поняли - код не найдёт. Например find в коде по например слову "например" Или всякие UDF с названием/параметрами кириллицей работать не будут. Как править - я точно не знаю. Включите поддержку юникода для неюникодных программ:
Или может в реестре вот тут нужно поменять и заработает: [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage]"1252"="c_1251.nls" [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Nls\CodePage]"1252"="c_1251.nls" Ну и другие ControlSet'ы посмотрите.Hugo