DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SQLSERVERのテーブルをADOを利用してExcelへ出力するには?

環境/言語:[WindowsXP,VB.NET,NET Frameworkのバージョン1.1]
分類:[.NET]

VB.NETの初心者です!
SQLSERVERのテーブルを、ADOを使ってエクセルへ出力しようとしています。
下記のSQLコマンドが「ExecuteNonQuery」でエラーになります。

<SQLコマンド>
Try
SqlCmd.CommandText = "INSERT INTO [Sheet1$] " & "IN 'D:\Test.xls' " & _
"'Excel 11.0;' " & "SELECT * FROM [卸店_tbl]"
SqlCmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

<エラー内容>
キーワード 'IN'付近に正しくない構文があります。

構文を色々変えて実行しましたが、SQLについて勉強不足で解決できませんでした。上のINSERT文について構文誤りを何方ご教示願いたいと思います。
宜しくお願い致します。
お世話になります。

■No13184に返信(VB.NET初級者さんの記事)
検索したら、こんな構文がありました。
insert into OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select * from [Sheet2$]')(id,name)
select id,name from serv_user

実行環境がないので試していませんが、ご参考になれば。
■No13185に返信(なおこ(・∀・)さんの記事)
> お世話になります。
>
> ■No13184に返信(VB.NET初級者さんの記事)
> 検索したら、こんな構文がありました。
> insert into OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select * from [Sheet2$]')(id,name)
> select id,name from serv_user
>
> 実行環境がないので試していませんが、ご参考になれば。

なおこさん、早速の回答有り難う御座います。
ご参考の記述はアクセスでの例のようですが、SQL SERVERの場合はどのように変更したらよいのでしょうか?
お世話になります。

■No13186に返信(VB.NET初級者さんの記事)
> ご参考の記述はアクセスでの例のようですが、SQL SERVERの場合はどのように変更したらよいのでしょうか?

http://www.sqljunkies.com/WebLog/madhivanan/archive/2005/07/27/16233.aspx
によると、

To export data from SQL Server table to Excel file, create an Excel file named testing having the headers same as that of table columns and use this query

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;',
'SELECT * FROM [SheetName$]') select * from SQLServerTable

『SQL ServerのテーブルからExcelのファイルへエクスポート…』
英語にはあまり自信がないですが(^_^;)
こんな事が書いてあるんだと思います。

> http://www.sqljunkies.com/WebLog/madhivanan/archive/2005/07/27/16233.aspx
> によると、
>
> To export data from SQL Server table to Excel file, create an Excel file named testing having the headers same as that of table columns and use this query
>
> insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
> 'Excel 8.0;Database=D:\testing.xls;',
> 'SELECT * FROM [SheetName$]') select * from SQLServerTable
>
> 『SQL ServerのテーブルからExcelのファイルへエクスポート…』
> 英語にはあまり自信がないですが(^_^;)
> こんな事が書いてあるんだと思います。
>

なおこさん、この度は色々とご足労をおかけしてすみませんでした。
調べて頂いた上記の記述やサイトから、試してみました。
構文エラーは無くなりました。有り難う御座います。
ただ、今度は、'Microsoft.Jet.OLEDB.4.0'が見つかりません...というエラーになりました。'Microsoft.Jet.OLEDB.4.0'を使うにはどうしたらいいですか。ドライバーのインストールか或いは他に参照設定が必要なのでしょうか?
お世話になります。

■No13188に返信(VB.NET初級者さんの記事)
こんなのをみつけました。
[Visual Basic .NET と ADO.NET を使用して Excel ブックのレコードの取得と変更を行う方法
]
http://support.microsoft.com/kb/316934/
> こんなのをみつけました。
> [Visual Basic .NET と ADO.NET を使用して Excel ブックのレコードの取得と変更を行う方法
> ]
> http://support.microsoft.com/kb/316934/
>
>

なおこさん、今回の件では、大変お世話になりました!!

おかげさまで、「表題の件」は解決することが出来ました。
<これが記述例です>
Try
SqlCmd.CommandText = "INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=YES;Database=D:\Test1.xls;','SELECT * FROM [Sheet1$]') select * from [卸店_tbl]"
SqlCmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
ちょっと見づらいかも知れません。

沢山の参考情報を頂きまして、本当に感謝申し上げます!!
と同時に、「なおこさん」の情報検索力には驚いています。
これからも、こちらの掲示板を利用させて頂きますので、今後とも宜しくお願い申し上げます。(本当に感謝です)
解決済み!
お世話になります。

■No13190に返信(VB.NET初級者さんの記事)
解決されてなによりです。

私も知らなかった情報なので、勉強になりました。
一緒に調べさせていただいて、ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板