幸得一代码,是关于导入Excel的,但有一细节,小弟不知该如何改!

linzaixuan003 2009-11-25 08:44:11
Private Sub cmdInput_Click()
ExportExcelSheetToAccess "Sheet1", "C:\Test.xls", "Emptable", "C:\dbemp.mdb"
End Sub

Private Sub ExportExcelSheetToAccess(sSheetName As String, sExcelPath As String, sAccessTable As String, sAccessDBPath As String)
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase(sExcelPath, True, False, "Excel 8.0")
Call db.Execute("Select * into [;database=" & sAccessDBPath & "]." & sAccessTable & " from [" & sSheetName & "$]")
MsgBox "导入成功!", vbInformation, "提示"
ReShow
End Sub



现在点击“cmdInput”按钮就可以把"C:\Test.xls"中"Sheet1"表内的数据导入到"C:\dbemp.mdb"的"Emptable"表内,但问题是,如果“dbemp.mdb”中已经存在"Emptable"表,那么导入将出错,就算"Emptable"表只有结构没有数据也一样出错,也就是说,只能导入一次,第二次导入的时候,因为第一次已经生成"Emptable"表了,所有第二次导的时候会出错

请教大哥们该如何解决呢?最好是"Emptable"表就算存在,也不会出错,呵呵
...全文
192 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
m60a1 2009-12-01
  • 打赏
  • 举报
回复
如果不能确定表的话,应该先新建一个表,然后捕捉一下错误,如果表已存在则不新建,否则新建之
clear_zero 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 linzaixuan003 的回复:]
引用 6 楼 asftrhgjhkjlkttttttt 的回复:
可以,从临时表里插入到正式表
conn.Execute "insert into 正式表名 (字段1,字段2) select 字段1,字段2 from 临时表"


谢谢您,这个办法很好啊
有两个问题再请教您:
1、这里所指的字段1,字段2,是说只要写两个字段呢,还是说原表中有多少个字段就要写多少个呢
2、临时表是要切切实实地生成在Access中,还是说这临时表只是生成在内存中(小弟初学者,不知道这问题问得是不是有点傻- -!)
[/Quote]
你要从临时表插多少个字段,就写多少个
贝隆 2009-11-25
  • 打赏
  • 举报
回复
linzaixuan003 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 asftrhgjhkjlkttttttt 的回复:]
可以,从临时表里插入到正式表
conn.Execute "insert into 正式表名 (字段1,字段2) select 字段1,字段2 from 临时表"
[/Quote]

谢谢您,这个办法很好啊
有两个问题再请教您:
1、这里所指的字段1,字段2,是说只要写两个字段呢,还是说原表中有多少个字段就要写多少个呢
2、临时表是要切切实实地生成在Access中,还是说这临时表只是生成在内存中(小弟初学者,不知道这问题问得是不是有点傻- -!)
孤独剑_LPZ 2009-11-25
  • 打赏
  • 举报
回复
可以,从临时表里插入到正式表
conn.Execute "insert into 正式表名 (字段1,字段2) select 字段1,字段2 from 临时表"
linzaixuan003 2009-11-25
  • 打赏
  • 举报
回复
有没有治本的办法呢,比如说能不能修改一下那个SQL语句,使得导入操作只是在已存在的表中追加数据而已

是“追加”
linzaixuan003 2009-11-25
  • 打赏
  • 举报
回复
有没有治本的办法呢,比如说能不能修改一下那个SQL语句,使得导入操作只是在已存在的表中添加数据而已
linzaixuan003 2009-11-25
  • 打赏
  • 举报
回复
楼上两位大哥的方法是可行,我之前也是用这方法,但是表结构被删除了,就等于表中的字段名和设置的字段属性(如字节大小、默认值、是否主键等等)被删除了,怎么办
特别 2009-11-25
  • 打赏
  • 举报
回复
检查一下是否存在该表,如果存在就先删除

drop table Emptable
孤独剑_LPZ 2009-11-25
  • 打赏
  • 举报
回复
'这样改即可
Private Sub Command1_Click()
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
On Error Resume Next
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\dbemp.mdb;" & "Persist Security Info=False"
conn.Open
conn.Execute "Drop Table [Emptable]"
conn.Close
ExportExcelSheetToAccess "Sheet1", "D:\Test.xls", "Emptable", "D:\dbemp.mdb"
End Sub

Private Sub ExportExcelSheetToAccess(sSheetName As String, sExcelPath As String, sAccessTable As String, sAccessDBPath As String)
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase(sExcelPath, True, False, "Excel 8.0")
Call db.Execute("Select * into [;database=" & sAccessDBPath & "]." & sAccessTable & " from [" & sSheetName & "$]")
MsgBox "导入成功!", vbInformation, "提示"
'ReShow
End Sub

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧