Microsoft Access 掲示板

ファイルを選択するダイアログボックスから、、、

2 コメント
views
4 フォロー

お世話になっております。


注文数(シートの1行目)

支店番号支店名店長名注文数量郵便番号住所
0001ボレロ支店山田店長5400111-1111東京都
0002タンゴ支店前田店長12800222-2222大阪府
0004サンバ支店太田店長4700444-4444北海道

上記のようなExcelファイルをフォームのクリック時イベントでダイアログボックスからインポートしたいです。
その際
①1行目(注文数というタイトル)は取込不要
②2行目をフィールド名として使う
③取り込みたいのは支店番号、支店名・注文数量のフィールドのみ
④取り込みたい行数はA列(支店番号)の最終行まで

以上の条件でインポートを行うにはどのようなコードを書けばよいでしょうか?

名前なし
作成: 2024/08/08 (木) 10:22:17
最終更新: 2024/08/08 (木) 10:23:19
通報 ...
1

現状、どこまでできていて、どこで躓いているのでしょうか。
ある程度コードを書いているのなら、現状のコードを提示してください。
まったくコードが書けていないなら、
とりあえず、調べてみて、できるところまでコードを書くのにチャレンジしてみてください。

ファイル選択ダイアログは下記などをご参考に。

【Access⑬】テーブルにインポートするファイルをダイアログで選択する | Invest edge

Excelの特定範囲のインポートに関しては、下記などをご参考に。

TransferSpreadsheetメソッドのRangeプロパティまとめ | Accessトリビアの泉

2

上記のようなExcelファイルをフォームのクリック時イベントでダイアログボックスからインポートしたい

  • ファイルダイアログによって選択された Excel ブック上に 2 つ以上のワークシートが存在していた場合はどのワークシートを参照するのか。

  • 選択されたブック上から参照したワークシートのレイアウト(列の名前/位置)が規定のものとは一致しているか否かを、インポートする直前に検査する必要はないのか。

①1行目(注文数というタイトル)は取込不要
②2行目をフィールド名として使う
③取り込みたいのは支店番号、支店名・注文数量のフィールドのみ
④取り込みたい行数はA列(支店番号)の最終行まで

今のところ考えられるのは概ね次のいずれかの方法。

  1. 「Excel ブックから任意のセル範囲をテーブルとして参照し、任意のフィールドを選択した結果を Access データベース上の任意のテーブルに追加するクエリ( SQL )」を実行する。

  2. 「Excel ブックから任意のセル範囲をテーブルとして参照し、任意のフィールドを選択した結果」と「レコードの追加先となるテーブル」をそれぞれ DAO(または ADO )の Recordset オブジェクトとして取得し、前者の全てのレコードを後者に追加するループ処理を実行する。

  3. オートメーションによる Excel アプリケーションの操作と DAO(または ADO )のレコードセットの操作を連携させる。

ただし 1 と 2 の方法の場合、参照元であるセル範囲の各列のデータ型を明示的に指定することはできないため、いずれかのレコードにおいて型変換エラーが発生したり、あるいは意図しないデータ型に変換されてデータが欠損する可能性があります。