
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
このQ&Aを見た人はこんなQ&Aも見ています
-
VB.NETの配列にExcelから読み込んできたデータを格納したい
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
VB.netでのExcelデータの読み込み
Visual Basic(VBA)
-
-
4
【VB.NET】Excelの最終行までの取得方法
Microsoft ASP
-
5
<VB.NET>INSERT文でDBにデータを入れたい
Visual Basic(VBA)
-
6
VBからEXCELのセルの値を取得する方法
Visual Basic(VBA)
-
7
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
8
VBのReturnの使い方
Visual Basic(VBA)
-
9
VB.NETでDataTableにデータ追加したい
Visual Basic(VBA)
-
10
VBでファイルが開かれているかどうかを確認したい
Visual Basic(VBA)
-
11
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
12
vb.netによるEXCEL値取得
Microsoft ASP
-
13
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
14
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
-
15
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
16
DateTimePickerでに年月までしか選択できないようにしたいです。
Visual Basic(VBA)
-
17
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
18
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
19
DataGridView 列ごとの入力制限
Visual Basic(VBA)
-
20
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
月度は何て読みますか?
-
男性に対して、『女性への気遣...
-
VBAでCOPYを繰り返すと、処理が...
-
switch の範囲指定
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
インタラクティブの反対語は?
-
VBA 特定の文字が入力されたセ...
-
Do~Loopした回数をカウントしたい
-
お家デートをしててハグを長い...
-
Loadイベント中にほかのイベン...
-
エクセルマクロVBA構成の相談
-
[大至急]5つの数字のパターンは?
-
RPGプログラムの*HIVALについて
-
vba 空のデータをSplitする時の...
-
JDBCでの大量データ検索でResul...
-
再帰処理を途中で抜けるには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
DoEventsがやはり分からない
-
月度は何て読みますか?
-
お家デートをしててハグを長い...
-
VB.NET Excelを読み込んでDataT...
-
VBの質問#if 0 then ってどう...
-
Do~Loopした回数をカウントしたい
-
VBAでCOPYを繰り返すと、処理が...
-
メルカリのメルカードで買い物...
-
インタラクティブの反対語は?
-
Loadイベント中にほかのイベン...
-
リョウ・・・量?料?
-
vba 空のデータをSplitする時の...
-
findは動くがfindnextがマクロ...
おすすめ情報