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も見ています
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VB.NETの配列にExcelから読み込んできたデータを格納したい
Visual Basic(VBA)
-
【VB.NET】Excelの最終行までの取得方法
Microsoft ASP
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
VB.netでのExcelデータの読み込み
Visual Basic(VBA)
-
5
VBからEXCELのセルの値を取得する方法
Visual Basic(VBA)
-
6
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
7
vb.netによるEXCEL値取得
Microsoft ASP
-
8
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
9
CloseとDisposeの違い
Visual Basic(VBA)
-
10
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
11
VB.NETで1→A、2→B、26→Z、27→AAの変換をしたい
Visual Basic(VBA)
-
12
エクセルのセル最終行取得
Visual Basic(VBA)
-
13
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
14
DataGridView 列ごとの入力制限
Visual Basic(VBA)
-
15
VB2010でExcelの行をコピーして挿入する
Visual Basic(VBA)
-
16
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
17
VB.NETで、配列をテーブルに変換して表示する。
Visual Basic(VBA)
-
18
ExecuteNonQueryメソッドの戻り値
その他(プログラミング・Web制作)
-
19
【VB】タブ切り替え時のイベント
Visual Basic(VBA)
-
20
VB.NET2003 テキストボックスに半角英数字以外入力させない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
VBAでループ内で使う変数名を可...
-
エクセルで、日付を入力すると...
-
VBAでセルに値が入力されるまで...
-
DoEventsがやはり分からない
-
EXCEL VBA マクロ 実行する度に...
-
リョウ・・・量?料?
-
月度は何て読みますか?
-
【Excel】特定の文字を含むセル...
-
VBの質問#if 0 then ってどう...
-
お家デートをしててハグを長い...
-
FFTの結果ついて
-
iD
-
findは動くがfindnextがマクロ...
-
VB6,Ifから抜けるには?
-
インタラクティブの反対語は?
-
C# 画面のちらつきを解消したい
-
フォーム上のすべてのTextBoxを...
-
vba 空のデータをSplitする時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
プログラミング言語についてc++...
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
switch の範囲指定
-
FFTの結果ついて
-
お家デートをしててハグを長い...
-
VBの質問#if 0 then ってどう...
-
findは動くがfindnextがマクロ...
-
離散時間フーリエ変換について
-
VB.NET Excelを読み込んでDataT...
-
インタラクティブの反対語は?
-
月度は何て読みますか?
-
リョウ・・・量?料?
-
Do~Loopした回数をカウントしたい
おすすめ情報