Accessのノウハウ(フォーム上でのインポート設定)
ファイルのインポート・エキスポートをフォーム上で実行する
こんな感じのものを作ります。
 前回取り込んだパスを入れておけるので、直す箇所が最小限ですみます。

インポートの作成手順は以下の通りです。
1.どんなフォームを作るか考える
(テキストボックス(取り込みパス)やボタンの数を考えておく)
2.フォームとテーブルの設計
①フォームのレコードソースになるテーブルを作る
 (今回は「T_format」としました)
 T_formatのフィールド名やデータ型を設定
 ②テーブルにインポートパス名を入力
 ③フォーム作成
 取り込み用のテキストボックスやボタンを作る

3.必要なファイルをいったん取り込んでみる
ウィザードを使ってインポートする。
 CSV等のテキストファイルは、取り込み時に、インポート定義を保存する

4.取り込み後のテーブルは 「T_workなんちゃら」にする
いったんワークファイルに取り込む
5.上記「T_work…」を使って、正式なテーブルに取り込む
正式なテーブルには、追加クエリで追加する。
 ※蓄積型で無いテーブルなら、追加クエリの前に削除クエリでいったん空にする。
※通常は、インポートしたテーブルを使って、そのまま定例処理を実施しない方が良いです。
 なぜなら、テーブルのフォーマットが変わったり、
 データの不具合があったりして、テーブルが取り込めなかったときに、定例処理に影響が出る可能性があるからです。
 ですから、ワークテーブルにいったん取り込むのです。
6.最終的には、以下の流れになります。
①ワークテーブルのデータ削除(削除クエリ)
 ②データインポート(CSVまたはExcelファイル)
 CSVの時はインポート定義を使うと便利(インポート定義を使わなくても動きます)
 ③正式なテーブルに取り込む(削除クエリ+追加クエリ)
 (正式:その後の処理…クエリ等を組み込んでいるテーブル)
7.上記の流れをフォーム(フォームモジュール)に書き込む

■フォームのテキストボックスの入力チェック・ファイルの存在チェック等。
 ■ワーニングをFalseにしたり、Trueに戻したり。
※2020/9/8補足 上記のうち、Excelインポートで False(ヘッダーなし)で書いてましたが、
 一般的にはTrue(ヘッダーあり)ですね。紛らわしくてスミマセン。
8.一度にインポートする
「複数のテキストボックスを入力して、全てを一度にインポートするボタン」を作る場合は、注意が必要です。

モジュールを書くときには、ボタンを押した「直後」に
 「テキストボックスの入力チェック「入力ファイルパスの存在チェック」を済ませるようにして下さい。
たまに、「一個処理する毎にファイルの存在チェックをしている」という大変悲しいフォームを見ることもあります。
 →30分かかってインポートして、最後のファイルのインポート時に「ファイルが存在しません」でコケるわけです。
たまにベンダーの方が作ったものでも見ることはありますので、
 依頼するときは、「失礼ながら、まず全てのファイルの存在チェックをしていますよね」と念のため確認するのがお勧めです。
9.整備
フォームの見た目を整えたり、テーブルで次のデータに進まないようにする。
 
10.Mainフォームへの遷移ボタンを作ったりする。
11.その他便利ハック
ちなみに、インポート定義のファイル名等は、以下のようにすると確認できます。
 ①ナビゲーションオプションを開いて、「システムオブジェクトの表示」にチェックを入れる。

②MSysIMEXSpecs で、どんなインポート定義ファイルがあるか確認できる。
 またMSysIMEXColumnsフィールド名等も確認できる。

12.一応コード貼っておきますね。
2020/9/8補足 Excelインポートで False(ヘッダーなし)で書いてましたが、
 一般的にはTrue(ヘッダーあり)なので訂正しておきます。
Private Sub cmd_import_Click()
    Dim myDirFN As String
    Dim myFN As String
    
    myFN = "T_work明細"
     
    If IsNull(Me.txt_Import) Then
        MsgBox "フォルダパスを入力してください"
        Exit Sub
    End If
    myDirFN = Me.txt_Import
    
    If Dir(myDirFN) = "" Then
        MsgBox "ファイルが見つかりません"
        Me.txt_Import.SetFocus
        Exit Sub
    End If
    
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Q_001_import明細_削除"
    
    'CSVデータのインポートの時
    DoCmd.TransferText acImportDelim, "MEISAIインポート定義", myFN, myDirFN, False
    
    'xlsxのインポートの時
    'DoCmd.TransferSpreadsheet acImport, , myFN, myDirFN, True
    
    DoCmd.OpenQuery "Q_101_明細_削除"
    DoCmd.OpenQuery "Q_102_明細_追加"
    MsgBox ("import終了")
    
    DoCmd.SetWarnings True
    
End Sub


