下面看我给出的内连接的代码,其实代码并不难:Sub mynzRecords_56() '第56讲 Dim cnADO, rsADO As Object Dim strPath, strSQL As String Worksheets("56").Select Cells.ClearContents Set cnADO = CreateObject("ADODB.Connection") Set rsADO = CreateObject("ADODB.Recordset") strPath = ThisWorkbook.FullName cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath strSQL = "Select a.型号,a.生产厂,a.数量,b.供应商 From [数据$]as a,[数据2$] as b Where a.型号=b.型号" 'strSQL = "Select a.型号,a.生产厂,a.数量,b.供应商 From [数据$] as a INNER JOIN [数据2$] as b ON a.型号=b.型号" rsADO.Open strSQL, cnADO, 1, 3 For i = 1 To rsADO.Fields.Count Cells(1, i) = rsADO.Fields(i - 1).Name Next Range("a2").CopyFromRecordset rsADO rsADO.Close cnADO.Close Set rsADO = Nothing Set cnADO = Nothing End Sub代码截图: 代码讲解:1) cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath此语句的代码建立起ADO和Excel的连接,大家可以直接利用,只要是连接07版本以上的EXCEL即可。2) strSQL = "Select a.型号,a.生产厂,a.数量,b.供应商 From [数据$]as a,[数据2$] as b Where a.型号=b.型号"此语句的代码为一个典型的SQL内连接的语句,用的是WHERE的表达式,大家要注意我字段的写法和定义a,b 两个数据表的写法。不可以有丝毫的错误。3) 'strSQL = "Select a.型号,a.生产厂,a.数量,b.供应商 From [数据$] as a INNER JOIN [数据2$] as b ON a.型号=b.型号"此语句的代码为一个典型的SQL内连接的语句的另一种写法,用的是的INNER JOIN….on…的表达式,大家要注意这种写法和定义a,b 两个数据表的写法。大体上和上面的写法是一致的,读者可以根据自己的习惯利用。 下面看代码的运行:大家要注意,上述型号为QQ01的供应商为RRR05是取自数据2的数据。 今日内容回向:1 什么是内连接?2 内连接的两种表法方式是什么?3 如果将select后的字段去掉换成*号会是什么样的结果? 本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm 我20多年的VBA实践经验,全部浓缩在下面的各个教程中:【分享成果,随喜正能量】人生无处不修行,能在世事中心静如水,才能在纷扰中安然无恙,非宁静非以致远,想要成就一番大事,必须要有静气。。