| 
    
     |  | 以前、同じようなし質問で、データの範囲を設定したら問題はなくなりました。 
 それで質問なんですが、
 
 エクセルのシート内の
 A1:Q200
 までのデータ範囲内で
 
 SQLをつかってエクセルVBAに挑戦中です。
 そこで、
 フィールド名の変更時、
 select 2007 as test,部署、氏名、年齢 from [DATA]としていますが、
 エラーになります。
 なぜかご存知の方おしえていただけませんでしょうか?
 
 テーブルレイアウトは
 部署 氏名 年齢
 
 となっており、TESTというフィールドに固定で2007をSQLの結果に反映したいのですが、エラーとなります。
 
 
 また、エクセルのSQLリファレンス(JETだと思いますが。。。現在、ACCESS97
 です。)
 でTransformの使い方など乗っているサイト、説明があればおしえていただけませんでしょうか?
 
 どうぞ宜しくお願い致します。
 
 
 Sub Test()
 Dim rs As Object
 Dim mysql As String
 If open_ado_excel(ThisWorkbook.FullName) = 0 Then
 
 
 mysql = "Select 2007 AS TEST,部署名,RNK,CD1,F1,社員CODE,氏名,F48,F49,F50,F51,F52,F53,F54,F55 " & _
 "FROM [DATA] WHERE 社員CODE<> 0 ORDER BY TEST,部署名,RNK,CD1,F1,社員CODE ;"
 
 Worksheets("Sheet1").Range("B8:N1010").ClearContents
 
 If get_exec_sql(mysql, rs) = 0 Then
 With Worksheets("Sheet1")
 '.Cells.ClearContents
 'データ開始位置
 .Range("B6").CopyFromRecordset rs
 For idx = 0 To rs.fields.Count - 1
 Debug.Print idx
 'フィールド
 .Cells(5, idx + 2).Value = rs.fields(idx).Name
 
 Next
 End With
 Call rs_close(rs)
 Else
 MsgBox "rs error"
 End If
 Call close_ado
 Else
 MsgBox "cn error"
 End If
 End Sub
 
 '=========================================================
 Public cn As Object
 '=========================================================
 Function open_ado_excel(book_fullname As String) As Long
 On Error Resume Next
 link_opt = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 "Data Source=" & book_fullname & ";" & _
 "Extended Properties=Excel 8.0;"
 Set cn = CreateObject("ADODB.Connection")
 cn.Open link_opt
 open_ado_excel = Err.Number
 On Error GoTo 0
 End Function
 '=========================================================
 Sub close_ado()
 On Error Resume Next
 cn.Close
 On Error GoTo 0
 End Sub
 '=========================================================
 Function get_exec_sql(sql_str, rs As Object) As Long
 On Error Resume Next
 Set rs = cn.Execute(sql_str)
 get_exec_sql = Err.Number
 On Error GoTo 0
 End Function
 '=========================================================
 Sub rs_close(rs As Object)
 On Error Resume Next
 rs.Close
 On Error GoTo 0
 End Sub
 
 |  |