
VB.NETについての質問になります。
今、目指している処理としましては GUI画面からの操作で
・Excelを読み込んでDataTableに格納 → DataTableからDB(SqlServer)にINSERTして登録
上記の処理を作りたいと思い色々調べながら書いたのですが、書き方がよく分からず足踏みしている処理があるので質問させていただきました。SqlServerへの接続処理は問題無くできています。
< 実際のコード >
' 登録ボタン
Private Sub btnExe_Click(sender As Object, e As EventArgs) Handles btnExe.Click
' ======== SqlServer 接続処理 ============
' ======== DataTableへ格納 ===============
'トランザクション
Dim tran As SqlTransaction
tran = con.BeginTransaction
Try
Dim dtCon As New OleDb.OleDbConnection
Dim dtCmd As New OleDb.OleDbCommand
Dim dtDa As New OleDb.OleDbDataAdapter
Dim dtShipment As New DataTable
' 接続文字列
dtCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; " &
"Data Source=" & FilePath & ";" & "Extended Properties=""Excel 12.0;HDR=YES;"""
' コネクションの設定
dtCmd.Connection = dtCon
' SQLクエリ
dtCmd.CommandText = "SELECT * FROM [Sheet1$]"
' SELECTコマンドの設定
dtDa.SelectCommand = dtCmd
' データを取得する
dtDa.Fill(dtShipment)
ネットを参考にして書いたのですが、まずお聞きしたいのが3つあります。
1.「接続文字列」のFilePathという変数ですが、TextBoxに反映されたパスを取得したいのですが、どのように書けばよいのでしょうか?※既定のフルパスを変数に入れてしまうと、そのパスしか読み取れなくなってしまうので、他のExcelデータが選ばれても読み込んでくれるようにしたいです。
2. Excelを読み込んだ時に、必ず1枚目のシートが選ばれるようにしたいです。
上記のコードでも「SQLクエリ」で[Sheet1$]と設定はしているものの、実際のExcelシート名は違う名称になっています。その名称を書いても良いのですが、後々変更された場合に修正が必要になるので、シート名に関係なく、シートの1枚目を必ず選択するような処理はどのように書けば良いのでしょうか?
3.ネットを見ているとExcelオブジェクトを使用して読み込んでいる方法もあるようですが、今回のような処理の場合は、Excelオブジェクトを使って読み込んだほうが良いのでしょうか?(使わなくても読み込めるみたいな記事もありましたが、違いがよく分かりません...)
お手数ですが、まずは上記3点を教えていただければ幸いです。
よろしくお願いいたします。

No.1ベストアンサー
- 回答日時:
SqlServerは初心者なので的外れになります!けど。
1.については変数:FilePath を既に用いていますがどこにも代入している個所がないのが気になります。
FilePath = TextBox1.Text
としてから接続文字列で使用されたら宜しいのでは?
2.については検証してませんが ExcelVBA では例題もあるようですので多分似た方法になるのかな?
ただ『確実に一番左のシート名を取得可能か?』と聞かれると・・・・試してから回答しないとやっぱダメですよね~
3.確実には言えませんがExcelオブジェクトを使用してですと開放などの手間もかかるでしょうから、ExcelBookに対して処理を必要としないのなら今の方が良いのかなって感じはします。
初心者ですから絶対的信頼のある回答ではないので、ベテランさんを待ってみて下さいな。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB.NETの配列にExcelから読み込んできたデータを格納したい
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
【VB.NET】Excelの最終行までの取得方法
Microsoft ASP
-
-
4
VB.netでのExcelデータの読み込み
Visual Basic(VBA)
-
5
VBからEXCELのセルの値を取得する方法
Visual Basic(VBA)
-
6
VB.NETでDataTableにデータ追加したい
Visual Basic(VBA)
-
7
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
8
VBでファイルが開かれているかどうかを確認したい
Visual Basic(VBA)
-
9
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
10
<VB.NET>INSERT文でDBにデータを入れたい
Visual Basic(VBA)
-
11
VBのReturnの使い方
Visual Basic(VBA)
-
12
vb.netによるEXCEL値取得
Microsoft ASP
-
13
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
14
DataGridView 列ごとの入力制限
Visual Basic(VBA)
-
15
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
16
【VB.NET】日付型の列にNULLを登録する方法について
SQL Server
-
17
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
18
CSVから指定行だけを読み込み
Visual Basic(VBA)
-
19
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
20
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
UMLでの例外処理
-
VBAでCOPYを繰り返すと、処理が...
-
ボタンクリックイベント 重複...
-
VBAでループ内で使う変数名を可...
-
月度は何て読みますか?
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
findは動くがfindnextがマクロ...
-
VB.NET Excelを読み込んでDataT...
-
switch の範囲指定
-
NULLを含むフィールド値の条件分岐
-
インタラクティブの反対語は?
-
vba 空のデータをSplitする時の...
-
RPGプログラムの*HIVALについて
-
取り消し線が入った文字を削除...
-
iD
-
VBの質問#if 0 then ってどう...
-
Loadイベント中にほかのイベン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
VBAでループ内で使う変数名を可...
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
銀行の窓口処理の件で知ってる...
-
VBAでCOPYを繰り返すと、処理が...
-
月度は何て読みますか?
-
インタラクティブの反対語は?
-
VB.NET DataGridViewでIsNewRo...
-
DoEventsがやはり分からない
-
VBの質問#if 0 then ってどう...
-
お家デートをしててハグを長い...
-
セックスレスの既婚女性は自慰...
-
VB.NET Excelを読み込んでDataT...
-
リョウ・・・量?料?
-
メルカリのメルカードで買い物...
-
Loadイベント中にほかのイベン...
おすすめ情報