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】Excelの最終行までの取得方法
Microsoft ASP
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
VBからEXCELのセルの値を取得する方法
Visual Basic(VBA)
-
5
VB.netでのExcelデータの読み込み
Visual Basic(VBA)
-
6
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
7
vb.netによるEXCEL値取得
Microsoft ASP
-
8
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
9
VB.NETで1→A、2→B、26→Z、27→AAの変換をしたい
Visual Basic(VBA)
-
10
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
11
CloseとDisposeの違い
Visual Basic(VBA)
-
12
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
13
エクセルのセル最終行取得
Visual Basic(VBA)
-
14
VB2010でExcelの行をコピーして挿入する
Visual Basic(VBA)
-
15
VBでファイルが開かれているかどうかを確認したい
Visual Basic(VBA)
-
16
VB.NETでファイル名順にファイルを読む方法
Visual Basic(VBA)
-
17
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
18
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
19
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
20
DataGridView 列ごとの入力制限
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA マクロ 実行する度に...
-
「ご処理進めて頂きますようお...
-
findは動くがfindnextがマクロ...
-
エクセルで、日付を入力すると...
-
JDBCでの大量データ検索でResul...
-
VBAでループ内で使う変数名を可...
-
メルカリのメルカードで買い物...
-
セルの値が0はクリアするマクロ
-
DoEventsがやはり分からない
-
switch の範囲指定
-
Do~Loopした回数をカウントしたい
-
お家デートをしててハグを長い...
-
レジ返品交換について(時間がか...
-
【Excel】特定の文字を含むセル...
-
Loadイベント中にほかのイベン...
-
月度は何て読みますか?
-
UMLでの例外処理
-
2重のDo~Loopは?
-
処理の実行中にOutLookがまとも...
-
インタラクティブの反対語は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
プログラミング言語についてc++...
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
switch の範囲指定
-
FFTの結果ついて
-
お家デートをしててハグを長い...
-
VBの質問#if 0 then ってどう...
-
findは動くがfindnextがマクロ...
-
離散時間フーリエ変換について
-
VB.NET Excelを読み込んでDataT...
-
インタラクティブの反対語は?
-
月度は何て読みますか?
-
リョウ・・・量?料?
-
Do~Loopした回数をカウントしたい
おすすめ情報