Excel CommandBars / Controls на местных языках - PullRequest
0 голосов
/ 14 июля 2010

Win-XP / Excel 2003 / VBA ....

У меня есть следующий фрагмент кода для перехвата всех операций вставки, инициированных пользователем (главное меню, контекстное меню и клавиша control-V), и отправки его в Sub TrappedPaste ()

....
Application.CommandBars("Edit").Controls("Paste").OnAction = "TrappedPaste"
Application.CommandBars("Edit").Controls("Paste Special...").OnAction = "TrappedPaste"
Application.CommandBars("Cell").Controls("Paste").OnAction = "TrappedPaste"
Application.CommandBars("Cell").Controls("Paste Special...").OnAction = "TrappedPaste"
Application.OnKey "^v", "TrappedPaste"
....

Этот код работает нормально. Чудо произошло во время всемирного развертывания листа, потому что «Редактировать» не означает «Редактировать», а «Вставить» не означает «Вставить» на немецком, французском и всех других языках между (A) leut и (Z) apotec: O

Q:

  1. Есть ли способ достижения независимость от языка пользовательский интерфейс Excel, т.е. есть числовой эквивалент «Вставить» аргумент, который является тем же на всех национальных языках?
  2. как я могу найти этот номер?
  3. ctrl-V - это всегда ctrl-v на всех локальных языках Windows?

Заранее спасибо за любую помощь

С уважением, MikeD

1 Ответ

2 голосов
/ 14 июля 2010

Каждый элемент управления на панели инструментов имеет ID, который можно использовать с функцией FindControl:

? application.CommandBars("Edit").FindControl(msoControlButton, 22).Caption

где 22 - идентификатор кнопки Paste. Насколько мне удалось проверить, это число одинаково для разных языков.
Таким образом, вы можете найти их в английской версии и просто жестко их кодировать.

...