|
一个文件夹下有多个excel文件(从其他软件导出的文件,见样表),想用vba导入一个access表中,报错(截图见下),但我导正常的excel文件能成功,这些文件用excel打开后另存为时,显示是"文本文件(制表符分隔)",不知是否受此影响?若是,应如何解决?望高手指导,盼!
Sub Macro1()
Dim cnn As Object
Dim cat As Object, tb1 As Object
Dim mydata$, Mypath$, myFile$, flag As Boolean
mydata = ThisWorkbook.Path & "\数据库.mdb"
Set cnn = CreateObject("adodb.connection")
Set cat = CreateObject("ADOX.Catalog")
If Dir(mydata) <> "" Then '如果“数据库.mdb”已经存在
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mydata '利用ADOX取得数据表名
For Each tb1 In cat.Tables
If tb1.Type = "TABLE" Then
If tb1.Name = "Sheet1" Then flag = True
End If
Next
Else '如果“数据库.mdb”不存在,新建“数据库.mdb”数据库
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mydata
End If
Set cat = Nothing
Set tb1 = Nothing
cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & mydata
Mypath = ThisWorkbook.Path & "\"
myFile = Dir(Mypath & "*.xls")
Do While myFile <> ""
If myFile <> ThisWorkbook.Name Then
If Not flag Then '如果“Sheet1”数据表不存在
cnn.Execute "select * into .Sheet1 from [Excel 8.0;Database=" & Mypath & myFile & "].[Sheet1$A1:H]" '插入“Sheet1”数据表
flag = True
Else '“Sheet1”数据表已经存在
cnn.Execute "insert into .Sheet1 select * from [Excel 8.0;Database=" & Mypath & myFile & "].[Sheet1$A1:H]" '插入新纪录
End If
End If
myFile = Dir()
Loop
cnn.Close
Set cnn = Nothing
MsgBox "ok"
End Sub
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|