お世話になっております。
注文数(シートの1行目)
支店番号 | 支店名 | 店長名 | 注文数量 | 郵便番号 | 住所 |
---|---|---|---|---|---|
0001 | ボレロ支店 | 山田店長 | 5400 | 111-1111 | 東京都 |
0002 | タンゴ支店 | 前田店長 | 12800 | 222-2222 | 大阪府 |
・ | ・ | ・ | ・ | ・ | ・ |
0004 | サンバ支店 | 太田店長 | 4700 | 444-4444 | 北海道 |
上記のようなExcelファイルをフォームのクリック時イベントでダイアログボックスからインポートしたいです。
その際
①1行目(注文数というタイトル)は取込不要
②2行目をフィールド名として使う
③取り込みたいのは支店番号、支店名・注文数量のフィールドのみ
④取り込みたい行数はA列(支店番号)の最終行まで
以上の条件でインポートを行うにはどのようなコードを書けばよいでしょうか?
現状、どこまでできていて、どこで躓いているのでしょうか。
ある程度コードを書いているのなら、現状のコードを提示してください。
まったくコードが書けていないなら、
とりあえず、調べてみて、できるところまでコードを書くのにチャレンジしてみてください。
ファイル選択ダイアログは下記などをご参考に。
【Access⑬】テーブルにインポートするファイルをダイアログで選択する | Invest edge
Excelの特定範囲のインポートに関しては、下記などをご参考に。
TransferSpreadsheetメソッドのRangeプロパティまとめ | Accessトリビアの泉
ファイルダイアログによって選択された Excel ブック上に 2 つ以上のワークシートが存在していた場合はどのワークシートを参照するのか。
選択されたブック上から参照したワークシートのレイアウト(列の名前/位置)が規定のものとは一致しているか否かを、インポートする直前に検査する必要はないのか。
今のところ考えられるのは概ね次のいずれかの方法。
「Excel ブックから任意のセル範囲をテーブルとして参照し、任意のフィールドを選択した結果を Access データベース上の任意のテーブルに追加するクエリ( SQL )」を実行する。
「Excel ブックから任意のセル範囲をテーブルとして参照し、任意のフィールドを選択した結果」と「レコードの追加先となるテーブル」をそれぞれ DAO(または ADO )の Recordset オブジェクトとして取得し、前者の全てのレコードを後者に追加するループ処理を実行する。
オートメーションによる Excel アプリケーションの操作と DAO(または ADO )のレコードセットの操作を連携させる。
ただし 1 と 2 の方法の場合、参照元であるセル範囲の各列のデータ型を明示的に指定することはできないため、いずれかのレコードにおいて型変換エラーが発生したり、あるいは意図しないデータ型に変換されてデータが欠損する可能性があります。