質問 |
||
| 質問者:smorgas030 | SSMSEを使ったクエリ結果をエクセルで出力したい | |
|---|---|---|
困り度:
|
SSMSE(SQLServerManagementStudioExpress)を使用してクエリを作成し、問題なく結果が出ました。そのデータをエクセルなどで出力する方法はあるのでしょうか。現在はコピペでやっています。宜しくお願いいたします。 | |
質問投稿日時:07/07/11 11:31 質問番号:3157841 |
||
回答 |
|
| 回答者:chibita_papa | > ちなみにフィールド名(列名?)も一緒に出力することは可能でしょうか。 Sub aaa() Const connstr = "Provider=sqloledb;" & _ "Data Source=サーバー名;Initial Catalog=データベース名;User Id=ユーザー名;Password=パスワード; " Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strSQL As String 'コピペして下さい strSQL = "SSMSE(SQLServerManagementStudioExpress)を使用して作成したクエリ" conn.Open connstr rs.Open strSQL, conn If rs.EOF = False Then 'フィールド名を取得 Dim i As Integer For i = 0 To rs.Fields.Count - 1 Cells(1, i + 1) = rs.Fields(i).Name Next i Range("A2").CopyFromRecordset rs End if rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Sub 後は、SQL文を自動編集したり、 ツール − マクロ − マクロ − オプションで ショートカットを作ると使い勝手が良くなると思います。 また、ワークシートにボタンや画像を配置しそれをクリックすると データ抽出なんかもできます。 |
|---|---|
| 種類:回答 どんな人:経験者 自信:自信あり |
|
| |
回答日時:07/07/12 16:37 回答番号:No.6 |
|
| この回答へのお礼 | ありがとうございます。 フィールド名も出力できました。 ショートカットもできました。 クエリを変更した場合は、VBの中身を都度変更すればいいのですね。 ありがとうございました。 |
回答 |
|
| 回答者:chibita_papa | ツール − 参照設定で Microsoft ActiveX Data Objects 2.X Library (2.1 〜 2.8) を参照して下さい。 > 参照設定がグレーアウトになってできませんでした。 なぜ出来なかったのか分かりませんが 新規ワークシートに先に参照設定することは出来ませんか。 |
|---|---|
| 種類:回答 どんな人:経験者 自信:自信あり |
|
| |
回答日時:07/07/12 14:33 回答番号:No.5 |
|
| この回答へのお礼 | ありがとうございます。 できました。 何回も回答ありがとうございました。 ちなみにフィールド名(列名?)も一緒に出力することは可能でしょうか。 |
回答 |
|
| 回答者:chibita_papa | >エクセル立ち上げて、ツールのマクロからVisualBasicEditorを立ち上げて、いただいたコードをここで使うのかなくらいのレベルです。 すいません。 十分です。 Sub aaa() から End Sub までをコピペし (2)(3)を編集し 実行してみてください。 シートに A2以下に抽出データがあるはずです もし、エラーが出たらエラー内容を教えてください。 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:自信あり |
|
| |
回答日時:07/07/12 08:22 回答番号:No.4 |
|
| この回答への補足 | ”ユーザ定義型は定義されていません”でググったら、 ツールの参照設定を変更するみたいなことがあったので、 やろうとしたら、参照設定がグレーアウトになってできませんでした。 |
| この回答へのお礼 | 何度もありがとうございます。 >Sub aaa() から End Sub までをコピペし >(2)(3)を編集し >実行してみてください。 実行したらエラーが出ました。 こんな感じです。 実行のしかたにも自信がないので書いておきます。 VisualBasicEditor ↓ 実行 ↓ Sub/ユーザフォームの実行 ↓ ”コンパイルエラー ユーザ定義型は定義されていません” のエラーメッセージが出ます。 よろしければご指示ください。 |
回答 |
|
| 回答者:chibita_papa | smorgas030さんのレベルが分からないのですが (1)VBAは分かりますか。 ここでNOと言われるとちょっと困るのですが・・・ (2)Const connstr = "Provider=sqloledb;" & _ "Data Source=サーバー名;Initial Catalog=データベース名;User Id=ユーザー名;Password=パスワード; " を smorgas030さんのデータベースの環境に編集する事が出来ますか。 (3)strSQL = "SSMSE(SQLServerManagementStudioExpress)を使用して作成したクエリ" これを、SSMSEからコピペし編集することが出来ますか。 以上、よろしくお願いします。 |
|---|---|
| 種類:補足要求 どんな人:経験者 自信:自信あり |
|
| |
回答日時:07/07/11 15:56 回答番号:No.3 |
|
| この回答へのお礼 | 回答ありがとうございます。 (2)(3)は大丈夫です。できます。 (1)はほとんどわかりません。 エクセル立ち上げて、ツールのマクロからVisualBasicEditorを立ち上げて、いただいたコードをここで使うのかなくらいのレベルです。 すいません。 あきらめたほうがよかったでしょうか。 |
回答 |
|
| 回答者:chibita_papa | NO1です。 言い忘れましたが 参照設定で、 Microsoft ActiveX Data Objects 2.X Library を参照して下さい。 |
|---|---|
| 種類:アドバイス どんな人:経験者 自信:自信あり |
|
| |
回答日時:07/07/11 13:13 回答番号:No.2 |
|
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |
回答良回答20pt |
|
| 回答者:chibita_papa | これで試してみてください。 Sub aaa() Const connstr = "Provider=sqloledb;" & _ "Data Source=サーバー名;Initial Catalog=データベース名;User Id=ユーザー名;Password=パスワード; " Dim conn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strSQL As String 'コピペして下さい strSQL = "SSMSE(SQLServerManagementStudioExpress)を使用して作成したクエリ" conn.Open connstr rs.Open strSQL, conn Range("A2").CopyFromRecordset rs rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Sub |
|---|---|
| 種類:回答 どんな人:経験者 自信:自信あり |
|
| |
回答日時:07/07/11 13:10 回答番号:No.1 |
|
| この回答へのお礼 | 早速の回答ありがとうございます。 教えてください。 こちらのコードをどうしたらいいでのしょうか。 初心者なのであまりわかっていなくてすいません。 |