Q:如下要求:
1、将附件里的(7-31.XLS)工作簿(TestData)表中的B:AG列第4行到最后一行(最后一行不定)数据导入到(检验数据库--误差数据)表中 ,倒入工作簿需手选,如果导入其他工作簿时,数据库里的出厂编号列已有的话,也就是说出现重复编号时,替换整行数据,例如已经导入了一个(7-31.XLS)工作簿(TestData)表中的B:AG列第4行到最后一行数据,其中有编号1207001,而(7-31.XLS)工作簿(TestData)表中的B:AG列第4行到最后一行中的数据 也有1207001这个编号时。直接替换掉1207001后面的整行数据。无则在数据库插入数据。
2、按照A2-A17单元格查找数据库中的数据并将整行的数据复制到“问题.xls”工作簿“SHEET1"工作表中来
3、将“问题.xls”工作簿“SHEET2"工作表中的A2-L3导入到检验数据库中的“基本资料”表
A:第一个要求的思路是,先交叉筛选出两表重复的数据,然后从ACC数据库中删除,然后再用插入数据。
第二个要求就是直接查询啦。
第三个要求无非也是直接插入数据。- Sub wt1()
- Dim cnn As Object, SQL$, fpth As String
- fpth = Application.GetOpenFilename("excel文件,*.xls*", , , , False) '运用打开文件对话框获取打开文件路径
- Set cnn = CreateObject("adodb.connection") '创建ADO连接对象
- cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "" & "检验数据库.mdb" '设置连接参数
- SQL = "delete from 误差数据 where 出厂编号 in (select 出厂编号 from [Excel 8.0;Database=" & fpth & "].[TestData$b3:AG65536])" '从数据库删除重复数据
- cnn.Execute SQL '执行SQL语句
- SQL = "insert into 误差数据 select * from [Excel 8.0;Database=" & fpth & "].[TestData$b3:AG65536]" '然后插入所有数据
- cnn.Execute SQL '执行
- cnn.Close
- Set cnn = Nothing
- End Sub
- Sub wt2()
- Dim cnn As Object, SQL$
- Set cnn = CreateObject("adodb.connection") '创建ADO连接对象
- cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "" & "检验数据库.mdb" '设置连接参数
- SQL = "select * from 误差数据 where 出厂编号 in (" & Join(Application.Transpose(Range("a2:a17")), ",") & ")" '做条件查询
- Range("b2").CopyFromRecordset cnn.Execute(SQL) '输出到单元格
- cnn.Close
- Set cnn = Nothing
- End Sub
- Sub wt3()
- Dim cnn As Object, SQL$, fpth As String
- Set cnn = CreateObject("adodb.connection") '创建ADO连接对象
- cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "" & "检验数据库.mdb" '设置连接参数
- SQL = "insert into 基本资料 select * from [Excel 8.0;Database=" & ThisWorkbook.FullName & "].[Sheet2$b1:l65536]"
- '直接插入数据
- cnn.Execute SQL '执行
- cnn.Close '关闭连接
- Set cnn = Nothing
- End Sub
|