namatyu MC285Pさんの質問からの解答を利用させていただいて、会社の履歴表を作成しましたが、訳あって、(資材受け入れシート)側の開始行をA1からA2に変えた所、「パラメータがすくなすぎます。14を指定してください」と出てしまいます。
Sheets("資材受け入れシート").Range("A1:D1").Copyを
Sheets("資材受け入れシート").Range("A2:D2").Copyに変えても解決しません…
SQL文が勉強不足で、変更場所が分かりません
1 2 3 4
受入日 品名 Lot 数量
7/7 A BNR32 10
7/8 A BNR32 5
7/10 B SW200 2
7/7 B AE860 4
7/8 B SW200 12
7/9 C GD300 10
7/7 C GD300 1
7/7 C DC200 7
Sub test()
Dim strSql As String
Dim cnXL As Object
Dim rsXL As Object
Const adOpenForwardOnly = 0
Sheets("資材受け入れシート").Range("A1:D1").Copy
Sheets("資材受け入れシート").Paste Destination:=Worksheets("Sheet2").Range("A1:D1")
Application.CutCopyMode = False
Set cnXL = CreateObject("ADODB.Connection")
Set rsXL = CreateObject("ADODB.Recordset")
With cnXL
.Provider = "MSDASQL"
.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & ThisWorkbook.FullName & "; ReadOnly=True;"
.Open
End With
strSql = "select max(受入日) as 日付,品名,Lot,sum(数量) as 合計" _
& " from [資材受け入れシート$]" _
& " group by 品名,Lot order by max(受入日),品名,Lot"
Debug.Print strSql
rsXL.Open strSql, cnXL, adOpenForwardOnly
Worksheets("sheet2").Cells(2, 1).CopyFromRecordset rsXL
Worksheets("sheet2").Columns("A:A").NumberFormatLocal = "m/d"
rsXL.Close: Set rsXL = Nothing
cnXL.Close: Set cnXL = Nothing
MsgBox "Sheet2に出力しました"
End Sub
色々、試したのですが、分かりません…
すいませんが、どたたか教えてください、お願いします。
お礼
解答ありがとうございます。 そうです、一行目に、タイトルをいれました。以前のシートと同様にしたくて… 範囲の指定("FROM [資材受け入れシート$A2:D10]") を使用し、ちゃんと動きました! 悩んでいたことが、できて、スッキリしました。 とても、助かりました、ありがとうございました。 もっと、勉強していきたいと、思います