+ -
当前位置:首页 → 问答吧 → 如何通过VB把excel的表添加为access的表,不是通过access的external data 菜单添加

如何通过VB把excel的表添加为access的表,不是通过access的external data 菜单添加

时间:2011-07-29

来源:互联网

- 不是通过access的external data 菜单添加
- 这样我就可以动态设置链接表的位置。

作者: allcap   发布时间: 2011-07-29

我个人以为应该先做好单机版的,再分离数据库。然后可以备份一份无保护的文件到本地,以链接表管理器的方式重定位链接表。
那么需要修改部分功能时,只需处理这个本地数据库即可。处理完毕后把前台复制到服务器,更新链接,保护好之后即可让用户端下载使用了。写代码始终不是一件愉快的事情。
不过我还是先写上来吧,给比较膜拜代码的网友用用。
里面有大部分注释,部分属性我就不写了。
Private Sub Cmd_LnkTbl_Click()
Dim dbs As Database
Dim Tdf As TableDef
'Dim Lianjie As String
Dim MyPath As String
Dim MyFile As String
Dim MyPwd As String
'错误处理
On Error GoTo err1
LnkTbl = False
'删除已有链接
Set dbs = CurrentDb
For Each Tdf In CurrentDb.TableDefs
If Len(Tdf.Connect) > 0 Then
DoCmd.DeleteObject acTable, Tdf.Name
End If
Next Tdf
dbs.Close
'显示打开对话框(需要引用Office库才能执行)。
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Clear
.Filters.Add "Access数据库(*.mdb)", "*.mdb"
.Title = "请浏览文件"
.ButtonName = "打开"
.InitialView = msoFileDialogViewDetails
If .Show = -1 Then
'获取链接表地址和密码。txt_Path为窗体的一个文本控件。
Me.Txt_Path.Value = CStr(fd.SelectedItems.Item(1))
MyPwd = "后台数据库密码"
Set dbs = OpenDatabase(Me.Txt_Path.Value, False, False, ";PWD=" & MyPwd)
For Each Tdf In dbs.TableDefs
'如果是本地表才连接
If Len(Tdf.Connect) = 0 And Tdf.Attributes = 0 Then
DoCmd.TransferDatabase acLink, "Microsoft Access", Me.Txt_Path.Value, acTable, Tdf.Name, Tdf.Name, False
End If
Next Tdf
dbs.Close
Set dbs = Nothing
LnkTbl = True
Exit Sub
Else
Debug.Print "用户取消"
End If
End With
err1:
LnkTbl = False
MsgBox Err.Description, vbExclamation, "错误!"
End Sub

作者: roych   发布时间: 2011-07-29