• 1
    みのちゃん 2023/03/10 (金) 18:56:31 ad693@a6874

    ダイアログの表示方法は分かりました。

    ダイアログから選択したファイルを「テキストボックス」に
    表示させインポートする方法を教えてください。

    ダイアログ表示は下記のようにしました
    Private Sub コマンド6_Click()

        On Error Resume Next
        '変数定義
        Dim intRet As Integer         'ダイアログ用変数
        Dim GetFileName As String     'フルパスの値

        With Application.FileDialog(msoFileDialogOpen)
            'ダイアログのタイトルを設定
            .Title = "ファイルを開くダイアログ"
            'ファイルの種類を設定
            .Filters.Clear
            .Filters.Add "Microsoft Office Excelファイル", ".xls,.csv"
            .FilterIndex = 1
            '複数ファイル選択を許可しない
            .AllowMultiSelect = False
            '初期パスを設定
            .InitialFileName = CurrentProject.Path
            'ダイアログを表示
            intRet = .Show

            If intRet <> 0 Then
              'ファイルが選択されたとき
              'そのフルパスを返り値に設定
              GetFileName = Trim(.SelectedItems.Item(1))
            Else
              'ファイルが選択されなければブランク
              GetFileName = ""
            End If
        End With
        '選択されたフルパスをテキストボックスへ表示
        Form_F_Form.テキストn.Value = GetFileName

    End Sub

  • 2

    CSVファイルのインポートは DoCmd.TransferTextメソッドでできます。
    詳細は下記で確認してください。

    DoCmd.TransferText メソッド (Access) | Microsoft Learn

    フォーム上にコマンドボタン「コマンド0」、テキストボックス「テキスト1」か配置してあり、
    「テーブル1」にインポートするとすると下記のコードになります。

    Private Sub コマンド0_Click()
    
    '    On Error Resume Next
        '変数定義
        Dim intRet As Integer         'ダイアログ用変数
        Dim GetFileName As String     'フルパスの値
    
        With Application.FileDialog(msoFileDialogFilePicker)
            'ダイアログのタイトルを設定
            .Title = "ファイルを開くダイアログ"
            'ファイルの種類を設定
            .Filters.Clear
            .Filters.Add "csvファイル", "*.csv"
            '複数ファイル選択を許可しない
            .AllowMultiSelect = False
            '初期パスを設定
            .InitialFileName = CurrentProject.Path
            'ダイアログを表示
            intRet = .Show
    
            If intRet <> 0 Then
              'ファイルが選択されたとき
              'そのフルパスを返り値に設定
              GetFileName = Trim(.SelectedItems.Item(1))
            Else
              'ファイルが選択されなければブランク
              GetFileName = ""
            End If
        End With
        '選択されたフルパスをテキストボックスへ表示
        Me.テキスト1.Value = GetFileName
    
        DoCmd.TransferText acImportDelim, , "テーブル1", GetFileName, True
    
    End Sub
    
  • 3
    みのちゃん 2023/03/12 (日) 18:39:57 ad693@a6874

    hatena様

    ありがとうございます。
    ダイアログからCSVファイルを選択しますと
    テキストボックスにフルパスが入りますが
    以下のエラーが表示されました。
    何度か試しましたが同じ状態です。
    画像1
    画像2

  • 4
    みのちゃん 2023/03/12 (日) 18:53:44 ad693@a6874

    hatena 様

    説明が不足してました。申し訳ありません。

    あらかじめ用意したインポート用のテーブルがあり
    そのテーブルにインポートするとエラーになります。(先投稿の)

    (ウィザードで手動ではインポートできます。)

  • 5
    みのちゃん 2023/03/12 (日) 19:16:10 ad693@a6874

    hatena 様

    前投稿の

    説明が不足してました。申し訳ありません。
    あらかじめ用意したインポート用のテーブルがあり
    そのテーブルにインポートするとエラーになります。(先投稿の)

    (ウィザードで手動ではインポートできます。)

    勘違いでした。

    インポートできてましたが文字化けと
    インポートエラーのテーブルができます。
    また、望んでいる状態のデータインポートに
    なっておりませんでした。

    画像の順番は
    インポートエラーの画像
    テーブル1の状態
    手動での状態です(理想状態)
    手動手順

    ※インポートしたいCSVファイルのアップロードはできないのでしょうか?

    宜しくお願いします。画像1
    画像2
    画像3
    画像4

  • 6
    みのちゃん 2023/03/12 (日) 19:35:22 ad693@a6874

    hatena 様

    インポート定義を追加したらできました。

    DoCmd.TransferText acImportDelim, "インポート定義", "テキスト1", GetFileName, True

    ※ダイアログ開いてから「キャンセル」を選ぶとエラーになります。
    解決策はありますでしょうか?

    なんども申し訳ありません。

  • 7

    下記でどうでしょう。

        '選択されたフルパスをテキストボックスへ表示
        Me.テキスト1.Value = GetFileName
        If GetFileName = "" Then Exit Sub 'これを追加してください。
        DoCmd.TransferText acImportDelim, , "テーブル1", GetFileName, True
    
  • 8
    みのちゃん 2023/03/13 (月) 17:50:32 ad693@a6874

    hatena 様

    ありがとうございました。
    プログラムを停止させれば良かったのですね!

    勉強になりました。