|
以前、同じようなし質問で、データの範囲を設定したら問題はなくなりました。
それで質問なんですが、
エクセルのシート内の
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
|
|