2016-10-19 4 views
1
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;" 

こんにちは、レコードクエリ - エクセル

私は(コード自体がsourced from hereある)VBAモジュール中で上記を持っています。私の質問は、各ファイルの私の列は行15から始まり、データは行16から降ります。どのファイルをUNIONに行15から見えるようにするにはどうすればいいですか?

ありがとうございます!

+0

最初の15行は何ですか?ヘッダーは1行目または15行目にありますか? – Comintern

+0

15行目のヘッダー - 最初の14個は、以下のデータに関する重要なKPIを持っています(すべてのファイルの標準) – Dingo

+0

AFAIKはExcelワークシートをこのように照会するために、データテーブルとして、つまり行1の列見出しと行2、および一貫したデータ型。これらの14行のKPIは、列型の推論を無効にする可能性があります。私はあなたがこれを行うことができるとは思わない。 –

答えて

2

ADOまたはDAOを使用してExcelワークブックのSQLクエリを使用すると、範囲を[Sheet$A1:Z2]に設定してワークシートの領域を指定できます。最初に最後の名前の列を見つけます(UNIONは同じ長さと型でなければなりません)、有効なクエリに十分な行を追加します。以下は用途です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;" 
+0

あなたの助けを感謝:) – Dingo