Как изменить язык в vba excel

Обновлено: 03.07.2024

Если ваше приложение будет использоваться более чем в одной стране или интерфейс должен быть представлен более чем на одном языке, вам необходимо ознакомиться с региональными настройками Windows и языковыми пакетами.

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

Региональный стандарт пользователя

Сочетание региональных настроек пользователя и его настроек Excel называется языковым стандартом пользователя.

Региональные настройки Windows

Доступ к региональным настройкам можно получить из панели управления. Это часто сокращается до WRS

Windows 10 — Настройки, Регион
Windows 8.1 — Настройки, Регион
Windows 7 — Регион и язык, вкладка Форматы, Дополнительные настройки
Windows XP — Язык и региональные стандарты, Региональные настройки, Настроить

Что определено в этом диалоговом окне?
Названия дней, используемые для длинного формата даты, отображаемые в Excel
Имена месяцев, используемые для длинного формата даты, отображаемые в Excel
Имена дней, возвращаемые из Функция формата VBA
Названия месяцев, возвращаемые функцией формата VBA
Названия месяцев, распознаваемые функцией VBA CDate
Названия месяцев, которые распознаются при вводе непосредственно в ячейки Excel.
числовой формат, возвращаемый при использовании функции ТЕКСТ Excel
Язык любых неявных логических преобразований в строку (например, "=мое значение равно " & true)

SS – цифры.
Десятичный символ – это точка в большинстве стран (Великобритания, США), однако в некоторых странах используется запятая. (Франция)
Обозначение группировки цифр - обычно упоминается как оператор тысячи. В большинстве стран (Великобритания, США) это запятая, однако в некоторых странах используется точка. (Греция)

SS – Дата.
Короткая дата. Часто вызывает больше всего проблем. Великобритания: дд/мм/гггг. США: M/d/yyyy
Разделитель также может быть другим, и в некоторых странах вместо косой черты используется точка. (Норвегия)
Длинная дата -

Все параметры из региональных параметров и языковых параметров Windows можно найти в свойстве Application.International.
Ниже приведен список общих констант xlApplicationInternational:
xlCountryCode — языковая версия Office< br /> xlCountrySettings - расположение региональных настроек Windows
xlDateOrder - выбор порядка отображения дат MDY, DMY или TMD.
xlYearCode -
xlMonthCode -
xlDayCode -

Не существует константы для определения языковой версии установленной Windows (но вы можете использовать API).

Настройки Excel

На вкладке "Дополнительно" в разделе "Параметры редактирования" вы можете переопределить десятичные разделители и разделители тысяч.
SS
Их также можно изменить в коде, используя следующее:

Неявное преобразование

При преобразовании чисел в строки VBA использует форматирование чисел в соответствии с WRS
При преобразовании дат в строки VBA использует формат WRS "ShortDate".
Ваш код не может предполагать, что у вас всегда есть US или строка в формате UK.
При форматировании дат, времени или чисел VBA использует форматирование WRS
При проверке истинности или ложности используемый текст соответствует языку WRS
Следует соблюдать осторожность, если функция может возвращать разные типы данных

Литералы даты

3 февраля, поскольку всегда используется/предполагается формат мм/дд/гггг

Если вы введете дату в британском формате даты "дд/мм/гггг", VBA "иногда" автоматически поменяет местами день и месяц

Здравствуйте, я купил OEM-версию MS Office 2013 и обнаружил, что она на китайском языке. Я знаю, что могу изменить меню на любой язык, который мне нравится, установив соответствующий языковой пакет и выбрав язык отображения в офисе. Однако оказалось, что этот метод не работает для меню редактора Excel VBA. Он всегда отображается на китайском языке. Могу ли я узнать, есть ли способ изменить его на английский, пожалуйста?

Эта тема заблокирована. Вы можете подписаться на вопрос или проголосовать за него как полезный, но вы не можете отвечать в этой теме.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Ответы (1) 

Здравствуйте, у меня была такая же проблема, и я наконец нашел решение. Языковой файл для интерфейса редактора VBA хранится в следующей папке с разными вложенными папками:

C:\Program Files\Common Files\Microsoft Shared\VBA\VBA7.1

(может потребоваться поиск VBEUIINTL.dll, если вы не можете найти эту папку на своем компьютере)

в этой папке подпапка 1033 и ее содержимое предназначены для английского интерфейса. Остальные для разных языков. Каким-то образом VBA выбирает неправильную подпапку. Таким образом, вам в основном нужно скопировать содержимое папки 1033 (в качестве обходного пути):

"C:\Program Files\Common Files\Microsoft Shared\VBA\VBA7.1\1033\APC71ITL.DLL"
"C:\Program Files\Common Files\Microsoft Shared\VBA\VBA7.1 \1033\VBE7INTL.DLL"
"C:\Program Files\Common Files\microsoft shared\VBA\VBA7.1\1033\VBEUIINTL.DLL"

в папку 2052 (например, для китайского, может у вас другой), для смены языка.

Перед этим перезагрузите компьютер и не запускайте никакие офисные продукты. Затем скопируйте файлы; перезапишите, если спросят. Я также предлагаю вам сделать резервную копию папки VBA7.1 на случай, если что-то пойдет не так.

Сообщить о нарушении

Домогательство – это любое поведение, направленное на то, чтобы побеспокоить или расстроить человека или группу людей. К угрозам относятся любые угрозы самоубийства, насилия или причинения вреда другому человеку. Любой контент на тему для взрослых или неуместный для веб-сайта сообщества. Любое изображение, ссылка или обсуждение наготы. Любое поведение, которое является оскорбительным, грубым, вульгарным, оскверняет или демонстрирует неуважение. Любое поведение, которое может нарушать лицензионные соглашения с конечными пользователями, включая предоставление ключей продукта или ссылок на пиратское программное обеспечение. Незапрашиваемая массовая рассылка или массовая реклама. Любые ссылки на вирусы, шпионское ПО, вредоносное ПО или фишинговые сайты или их пропаганда. Любой другой неприемлемый контент или поведение, как это определено Условиями использования или Кодексом поведения. Любое изображение, ссылка или обсуждение, связанные с детской порнографией, детской наготой или другим жестоким обращением с детьми или их эксплуатацией.

Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован не так, как показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode. Подробнее о двунаправленных символах Юникода

Sub LangInFrames ()
scount = ActivePresentation.Slides.Count
Для j = 1 Для подсчета
fcount = ActivePresentation.Slides(j).Shapes.Count
Для k = 1 To fcount
If ActivePresentation.Slides(j).Shapes(k).HasTextFrame Then
ActivePresentation.Slides(j).Shapes(k).TextFrame.TextRange.LanguageID = msoLanguageIDEnglishUK
End If
Следующий k
Следующий j< /td>
End Sub

Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован не так, как показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode. Подробнее о двунаправленных символах Юникода

< /tr> Для каждого oShape в oSlide.Shapes
rem Это версия также включает текст, который не находится в текстовом поле
Public Sub changeLanguage()
Возобновление при ошибке Далее
Dim gi As GroupShapes '
'lang = "English"
lang = "Норвежский"
'Определить выбранный язык
If lang = "English" Then
lang = msoLanguageIDEnglishUK
ElseIf lang = "Norwegian" Then
lang = msoLanguageIDNorwegianBokmol
End If
'Установить язык по умолчанию в приложении
ActivePresentation.DefaultLanguageID = lang
'Установить язык в каждом текстовом поле каждого слайда
Для каждого слайда в ActivePresentation.Slides< /td>
Размерить oShape как фигуру
'Сначала проверьте, является ли это таблицей
Если oShape.HasTable, то
Для r = 1 К oShape.Table.Rows.Count
Для c = 1 К oShape.Table.Columns .Count
oShape.Table.Cell(r, c).Shape.TextFrame.TextRange.LanguageID = lang
Далее
Далее
Еще
Установите gi = oShape. GroupItems
'Проверить, является ли это группой фигур
If Not gi Is Nothing Then
Если oShape.GroupItems.Count > 0, то
Для i = 0 To oShape.GroupItems.Count - 1
oShape.GroupItems(i).TextFrame.TextRange.LanguageID = lang
Далее
Конец, если
'это ничего из вышеперечисленного, это просто простая форма, измените идентификатор языка
Else
oShape.TextFrame.TextRange. LanguageID = lang
End If
End If
Next
Далее
End Sub

Вы не можете выполнить это действие в данный момент.

Вы вошли в другую вкладку или окно. Перезагрузите, чтобы обновить сеанс. Вы вышли на другой вкладке или в другом окне. Перезагрузите, чтобы обновить сеанс.

Примечание: см. также другие страницы о международных проблемах с Excel на моем сайте.

Введение

Может быть полезно знать версию Excel и язык Excel приложения Excel, которое открывает вашу книгу, чтобы ваш код мог выполнять разные действия в зависимости от версии/языка.

Номер версии Excel

Вы можете использовать это, чтобы получить номер версии Excel в любом локальном файле: Val(Application.Version)

Excel 97 = 8
Excel 2000 = 9
Excel 2002 = 10
Excel 2003 = 11
Excel 2007 = 12
Excel 2010 = 14
Excel 2013 = 15
Excel 2016 = 16

Excel 2019 и Excel 365 также дают вам номер 16

Вы можете использовать этот тестовый макрос, чтобы протестировать реальную версию, я надеюсь, что скоро будет улучшенная версия.

Код страны

Вы можете использовать это, чтобы получить язык, выбранный в региональных настройках Windows:
Application.International(xlCountrySetting)

Это даст вам код страны, например 31 для голландского и 7 для русского.
Чтобы получить список кодов стран, выполните поиск Google, потому что MS удаляет информацию в Интернете.

Вы можете использовать Select case для запуска нужного вам кода

Идентификатор языка Excel

Если вы хотите узнать точный язык пользовательского интерфейса Excel (поскольку вы можете установить много разных языковых пакетов), вы можете использовать это, чтобы вернуть номер идентификатора языка:
Application.LanguageSettings.LanguageID(msoLanguageIDUI)< /p>

Чтобы узнать, к какому языку относится каждый идентификатор, нажмите F2 в редакторе VBA, чтобы открыть обозреватель объектов, введите msoLanguageID в поле поиска и нажмите кнопку поиска. Теперь вы видите длинный список с идентификаторами языков. Если вы выберете один, вы увидите номер в нижней части браузера объектов. Например, если я выберу "msoLanguageIDDutch", я увижу это в нижней части обозревателя объектов:

Константа msoLanguageIDDutch = 1043 (&H413)

Вы можете использовать Select Case прямо сейчас в своем коде, чтобы запускать другой код для нескольких языков, например,
чтобы отображать подписи ваших кнопок на правильном языке или что-то еще.

Примечание. Не работает в Mac Office. Другой способ сделать это см. на моей странице Mac.

Application.International (VBA)

В приведенном выше разделе я использую Application.International(xlCountryCode), чтобы получить язык, выбранный в региональных настройках Windows. Но вы можете использовать его, чтобы получить гораздо больше информации о пользовательском приложении Excel с этим в вашем коде VBA. Если вы выполните поиск Application.international в редакторе VBA, справка предоставит вам таблицу со всеми константами XlApplicationInternational, которые вы можете использовать в своем коде.

Например, эта строка кода даст вам локальные символы года, месяца и дня

Читайте также: