
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の最終行までの取得方法
Microsoft ASP
-
VB.NETの配列にExcelから読み込んできたデータを格納したい
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
VBからEXCELのセルの値を取得する方法
Visual Basic(VBA)
-
5
VB.NETで、配列をテーブルに変換して表示する。
Visual Basic(VBA)
-
6
vb.netによるEXCEL値取得
Microsoft ASP
-
7
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
8
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
9
.NET上でエクセル上に罫線を引く
Visual Basic(VBA)
-
10
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
11
エクセルのセル最終行取得
Visual Basic(VBA)
-
12
エクセルデータをVBで検索できますか?
Visual Basic(VBA)
-
13
CloseとDisposeの違い
Visual Basic(VBA)
-
14
【VB】タブ切り替え時のイベント
Visual Basic(VBA)
-
15
vb.netからエクセル関数書き込み
Visual Basic(VBA)
-
16
VBで既存エクセルシートを新規ブックにコピー
Visual Basic(VBA)
-
17
参照の設定について教えて下さい。
Visual Basic(VBA)
-
18
二次元配列のインデックスについて
Visual Basic(VBA)
-
19
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
20
VB.net 引数で配列変数を渡す際の要素数
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
昨今の処理水で中国に輸出でき...
-
メルカリのメルカードで買い物...
-
VBAでループ内で使う変数名を可...
-
エクセルで、日付を入力すると...
-
「ご処理進めて頂きますようお...
-
VBAでセルに値が入力されるまで...
-
EXCEL VBA マクロ 実行する度に...
-
switch の範囲指定
-
VBA ユーザーフォームにしたい
-
処理水が海へ放出 飲んでも平気...
-
IQテストの数列
-
フローチャート
-
FFTの結果ついて
-
UWSCでIEが開いているか判定す...
-
取り消し線が入った文字を削除...
-
エクセルVBA マクロ処理中のポ...
-
セレロンとE-350とE2-1800の性能差
-
VBA DO LOOP Do loopをつかって...
-
vba 空のデータをSplitする時の...
-
セルの値が0はクリアするマクロ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
UWSC
-
新婚半年でセックスレスになっ...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
メルカリのメルカードで買い物...
-
VBの質問#if 0 then ってどう...
-
Do~Loopした回数をカウントしたい
-
switch の範囲指定
-
処理水が海へ放出 飲んでも平気...
-
VBAでセルに値が入力されるまで...
-
findは動くがfindnextがマクロ...
-
リョウ・・・量?料?
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Select Case文でこのようなこと...
おすすめ情報