こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセル VBA SQL 開始行の指定

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

色々、試したのですが、分かりません…
すいませんが、どたたか教えてください、お願いします。

投稿日時 - 2011-03-24 21:16:24

QNo.6618017

すぐに回答ほしいです

質問者が選んだベストアンサー

もしかして資材受け入れシートの1行目にタイトル行かなにかを入れました?

その場合は、対象を

名前付きセル範囲("FROM TaisyoRange")

とするか

範囲の指定("FROM [資材受け入れシート$A2:D10]")

かにしましょう。

ちなみに

Sheets("資材受け入れシート").Range("A1:D1").Copy
Sheets("資材受け入れシート").Paste Destination:=Worksheets("Sheet2").Range("A1:D1")

は項目名称をコピーしています。

つまり資材受け入れシートのA1からD1("受入日 品名  Lot  数量")を

Sheet1のA1からD1にコピーです。

変更の必要はありますが、エラーとは無関係です。

投稿日時 - 2011-03-25 15:20:26

お礼

解答ありがとうございます。
そうです、一行目に、タイトルをいれました。以前のシートと同様にしたくて…

範囲の指定("FROM [資材受け入れシート$A2:D10]")
を使用し、ちゃんと動きました!
悩んでいたことが、できて、スッキリしました。
とても、助かりました、ありがとうございました。

もっと、勉強していきたいと、思います

投稿日時 - 2011-03-25 21:08:19

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

test() で動くんではないですか。

どこをどう変えたのか、どう試したのか

わからないので回答のしようがありません。

投稿日時 - 2011-03-25 14:40:55

あなたにオススメの質問