logging集查询 – Excel

strQuery = _ "SELECT * FROM [Sheet1$] " & _ "IN '" & ThisWorkbook.Path & "\Source1.xlsx' " & _ "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _ "UNION " & _ "SELECT * FROM [Sheet1$] " & _ "IN '" & ThisWorkbook.Path & "\Source2.xlsx' " & _ "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _ "UNION " & _ "SELECT * FROM [Sheet1$] " & _ "IN '" & ThisWorkbook.Path & "\Source3.xlsx' " & _ "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _ "ORDER BY A;" 

嗨,

我有上面的VBA模块(代码本身来自这里 )。 我的问题是,每个文件中的列从第15行开始,数据从第16行开始下降。我怎样才能使每个文件从第15行开始看UNION?

提前致谢!

使用通过ADO或DAO的Excel工作簿SQL查询,您可以通过以下方式设置范围来指定工作表区域: [Sheet$A1:Z2] 。 首先find最后一个命名的列(对于UNION它们必须是相同的长度和types),并添加足以进行有效查询的行。 以下使用Z999

 strQuery = _ "SELECT * FROM [Sheet1$A15:Z999] " & _ "IN '" & ThisWorkbook.Path & "\Source1.xlsx' " & _ "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _ "UNION " & _ "SELECT * FROM [Sheet1$A15:Z999] " & _ "IN '" & ThisWorkbook.Path & "\Source2.xlsx' " & _ "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _ "UNION " & _ "SELECT * FROM [Sheet1$A15:Z999] " & _ "IN '" & ThisWorkbook.Path & "\Source3.xlsx' " & _ "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;Extended Properties='HDR=YES;'] " & _ "ORDER BY A;"