现有好些商品软件和网站的后台数据库采用的仍是ACCESS数据库文件,并都加了密码,且其密码中还含有键盘难以输入的控制符。在既要保持原有软件所提供的功能可正常运行使用,又要充分利用其录入到ACCESS数据库中的业务数据资源,拓展其功能用途的情况下,通过VBA编程动态链接到带有密码的ACCESS数据库的表,对其数据进行再加工处理乃至二次开发利用,不失为一良好的途径。在此将实现这一过程的关键程序源代码摘录如下:
Private Sub Command1_Click()
On Error GoTo Err_Command1_Click
Dim I As Integer
I = CurrentDb.TableDefs.Count - 1
'删除现有的全部链接表。表类型属性CurrentDb.TableDefs(I).Properties(1)为False
While I >= 0
'Debug.Print I, CurrentDb.TableDefs(I).Name, CurrentDb.TableDefs(I).Properties(1)
If Not CurrentDb.TableDefs(I).Properties(1) Then
DoCmd.DeleteObject acTable, CurrentDb.TableDefs(I).Name
End If
I = I - 1
Wend
Me.txtPWD.SetFocus '激活密码输入栏
SendKeys "%EC", False 'Alt+编辑(E)+复制(C)_复制密码(含键盘无法输入的字符)
SendKeys "%FGL", False 'Alt+文件(F)+获取外部数据(G)+链接表(L)
SendKeys Me.txtPath, False '输入数据库带盘符或网络地址符路径的全名
SendKeys "%K", False 'Alt+链接(K)
SendKeys "^V", False 'Ctrl+V_粘贴输入数据库密码
SendKeys "{ENTER}", False '确定回车
SendKeys "%A", False 'Alt+全选(A)_选择全部表
SendKeys "%A", False 'Alt+全选(A)_再次选择全部表,避免网络反映延迟阻断
SendKeys "{ENTER}", False '确定回车
Exit_Command1_Click:
Exit Sub
Err_Command1_Click:
MsgBox Err.Description
Resume Exit_Command1_Click
End Sub
不难看出,此程序主要就是运用了简单的SendKeys指令,模拟人工操作步骤,而使看似复杂的问题得到了解决。
示例文件请参见:http://www.accessoft.com/bbs/showtopic.asp?ID=2982&BoardID=17