Prueba con ShellExecute en vez de con Shell:
1º/ Declaras la función en un módulo independiente:
#If VBA7 Then
'Access 2010 e 2013
Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongPtr, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPtr
#Else
'Access 2003 e 2007
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If
2º/ Haces la llamada al osk:
ShellExecute 0, vbNullString, "osk.exe", vbNullString, "C:\", 1
Esta solución la saqué de aquí: http://www.maximoaccess.com/t15518-resolvidoerro-na-funcao-de-chamada-do-teclado-virtual
Y si no te funciona, prueba este otro teclado virtual:
Shell ("C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe")
Está sacado de aquí: http://www.utteraccess.com/forum/index.php?showtopic=2036229 . Si te registras en ese foro, puedes descargar los archivos de ejemplo usados para llegar a una solución.
A ver si hay suerte (yo no lo puedo comprobar, que ahora mismo solo tengo acceso a un Win 7)
Un saludo.