ผมเขียนด้วย 2003 32บิต รันใน 2013 64บิต
โค๊ดจะเพิ่มมาอีก เท่าตัวสำหรับการประกาศค่าตัวแปรที่จะให้เข้ากันได้
ไม่รู้ว่า 2010 32บิต จะเหมือน 2003 32บิต หรือป่าวนะครับ เช่น
#If VBA7 Then
Private Declare PtrSafe Function GetKeyboardLayout Lib "User32" (ByVal dwLayout As LongLong) As LongLong
Private Declare PtrSafe Function ActivateKeyboardLayout Lib "User32" (ByVal HKL As LongLong, ByVal Flags As LongLong) As LongLong
Private Declare PtrSafe Function LoadKeyboardLayout Lib "User32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal Flags As LongLong) As LongLong
Dim res As LongLong
#Else
Private Declare Function GetKeyboardLayout Lib "User32" (ByVal dwLayout As Long) As Long
Private Declare Function ActivateKeyboardLayout Lib "User32" (ByVal HKL As Long, ByVal Flags As Long) As Long
Private Declare Function LoadKeyboardLayout Lib "User32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal Flags As Long) As Long
Dim res As Long
#End If