Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8.1 Pro : Excel 2007)
VBAのSQL
投稿日時: 19/12/09 18:31:27
投稿者: FILETUBE

こんばんは。
  VBAのSQLの使い方について教えて下さい。
 
  Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    cn.Provider = "Microsoft.ACE.OLEDB.12.0"
    cn.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"
    cn.Open "C:\DATA.xlsx"
    strWhere = ""
    strWhere = strWhere & " Where [番号]= 'A123' "
    strSQL = ""
  
    strSQL = strSQL & " SELECT * "
    strSQL = strSQL & " FROM [Sheet1$A:X" & Sheets(1).Rows.Count & "] "
    strSQL = strSQL & " " & strWhere
   
  上記のようなコードがあります。
 
    DATA.xlsxの見出し行は2行あり1行目は結合項目で
  [番号]は2行目にあります。
 
  見出し行を1行にすると動きますが、2行にすると
  「1つ以上の必要なパラメーターの値が設定されていません」のエラーになります。
 
  何か対策はありますか。わかる方おられましたら宜しくお願いします。 

回答
投稿日時: 19/12/09 22:03:51
投稿者: WinArrow
投稿者のウェブサイトに移動

見出し行を1行にするよう工夫してみましょう。
いろいろ悩んでいるより早いと思います。

投稿日時: 19/12/09 22:51:05
投稿者: FILETUBE

回答ありがとうございます。
出来れば見出し2行にしたかったのですが
無理でしょうか?

回答
投稿日時: 19/12/10 07:53:13
投稿者: WinArrow
投稿者のウェブサイトに移動

前レスは、無理だということを遠回しに表現したつもりです。
 
そもそもSQLはデータベースアプリケーションの仕様で設計されていると思います。
データベースには、フィールド(見出し)という概念がありますが、
それは行という概念ではありません。
ですから、同じフィールド名は使えないことにもなります。
 
でもワープロ的な感覚では、同じ名前の見出しにすることがあったり、セルを結合したりしますよね・・
データベースの世界では、ワープロ的な仕様は、通用しません。
 
 

投稿日時: 19/12/10 08:10:01
投稿者: FILETUBE

 大変丁寧な回答ありがとうございました。
よくわかりました。