Здравствуйте, прошу подсказать, как в макросе Auto_Open() прописать автоматическую смену раскладки клавиатуры на английскую при открытии файла, если раскладка до открытия файла была русской? Я пробовал с помощью Application.SendKeys ("%+" ;) , но в этом случае если раскладка до открытия файла была английской, то при его открытии она становится русской. А нужно, чтобы если раскладка английская, то оставалась таковой и не менялась. То есть задача состоит в том, чтобы после открытия файла раскладка клавиатуры в любом случае была английская, независимо от предшествующей раскладки.
Спасибо за ссылку. Я, естественно, искал решение до того, как задать вопрос. И уже много раз переходил по указанной Вами ссылке. Но не смог разобраться с предложенным там решением. Возможно, есть более короткое решение в одну строку?
То есть в моём случае не стоит задача смены языка при смене ячеек. А лишь необходимо, чтобы при открытии файла раскладка была гарантированно английской.
Private Declare Function ActivateKeyboardLayout _
Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Private Sub Workbook_Open()
x = ActivateKeyboardLayout&(67699721, 0)
End Sub
Теперь напишут, что не работает при открытии :-) paylevan, почитайте статью: Что такое модуль? Какие бывают модули? код, приведенный Olelucoye необходимо вставить в модуль ЭтаКнига, а если использовать код от EducatedFool - то в стандартный модуль. Разницы не будет. Правда, парни из Microsoft говорят, что использовать процедуру Auto_Open не рекомендуется. Хотя тут надо точно знать в каких версиях Excel планируется использовать. Ведь до 2000 не было событийных процедур листа и книги...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
На данный момент, самым коротким и красивым решением оказалось вот это:
Код
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal flags As Long) As Long
Private Sub Workbook_Open()
x = ActivateKeyboardLayout&(67699721, 0)
End Sub
Правда, парни из Microsoft говорят, что использовать процедуру Auto_Open не рекомендуется
Вряд ли они отключат эту возможность Я использую эту процедуру в своих программах, которые установлены на тысячах компов, с Excel от 2002 до 2013 У всех все четко работает. Так что это тот случай, когда можно не прислушиваться к парням из майкрософта)
Тут есть еще небольшая особенность - auto_open не срабатывает при программном открытии файлов. А событие в модуле книги срабатывает, если не отключить отслеживание событий. Это тоже надо принимать во внимание.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...