Microsoft Access 掲示板

フォームからExcelファイルの一部分をインポートしたい / 17

27 コメント
views
17
PPP 2025/07/14 (月) 22:12:48 修正 50473@7267b >> 9

(3)コマンドボタンを押したときの処理です
ここからが本題となります。

'エクセルを取り込みためのボタンをクリックしたときのイベントプロシージャー
Private Sub btn01_Click()
        
    'コンボボックスの値を選択しているかの確認
    If Me.cmb01.Value = "" Or IsNull(Me.cmb01) Then
        
        MsgBox ("コンボボックスの値を選択してください")
        
        'コンボボックスにフォーカスを移す
        Me.cmb01.SetFocus
        'コンボボックスをドロップダウンさせる
        Me.cmb01.Dropdown
        
        Exit Sub
        
    End If
    
    'FileDialogオブジェクトを宣言する
    Dim myOrderFile As FileDialog
        ' FileDialogオブジェクトを生成
        Set myOrderFile = Application.FileDialog(msoFileDialogOpen)


        '開く場所を指定(例:C:\Users\)
        '実際はエクセルデータがあるパスを代入する
        path(0) = "C:\Users\"
        
            'InitialFileNameプロパティにパスを設定
            myOrderFile.InitialFileName = path(0)


            'ダイアログのタイトルを設定
            myOrderFile.Title = "受注情報を取り込むエクセルファイルを選択してください"

                'フィルタを設定(例:エクセルファイル表示)
                myOrderFile.Filters.Clear
                myOrderFile.Filters.Add "テキストファイル", "*.xlsx"
    
                '慣れるとWithステートメント句で以下の様に省略して記述できる
                'With myOrderFile.Filters
                    '.Clear
                    '.Add "テキストファイル", "*.xlsx"
                'End With

        'ダイアログを表示
        '-1はOKボタンが押されたことを示す
        If myOrderFile.Show = -1 Then
        
            ' 選択されたファイルパスを取得
            For Each vrtSelectedItem In myOrderFile.SelectedItems
                
                'エクセルファイルのフルパスを代入する
                path(1) = vrtSelectedItem
                Debug.Print vrtSelectedItem
            
                'ここで選択されたファイルパスを使って取り込みの
                '処理を記載する
               
                    Open vrtSelectedItem For Input As #1
               
                        'ADO経由でエクセルデータを取り込む
                        'Callプロシージャーでエクセルデータを開き、セルのデータ内容を取得する
                        Call callExceltable
                        
                        'ファイルを開くときに使用した変数を閉じる
                        '閉じる処理をしないとファイルがロックされたままになるので注意
                        Close #1
            
                Next vrtSelectedItem
    
        Else
        
                ' キャンセルボタンが押された場合
                MsgBox ("ファイル選択がキャンセルされました。")
    
        End If

                Dim pos As Long
                    '[\]の位置を検索
                    pos = InStr(1, path(1), "\")
        
                'パスを取得する変数
                'エクセルファイル名より前の
                'パスの文字列を取得
                Dim firstCharacter As String
                
                'ルートパスのみの文字列を取得する
                firstCharacter = Left(path(1), pos)
            
                    '[\]が見つかった場合
                    If pos > 0 Then
            
                    Dim result As String
                        '[\]の次の文字から最後まで抽出
                        result = Mid(path(1), pos + 1)
               
                
                        'ファイル名を変える式
                        'Name oldpathname As newpathname
                        Name path(1) As firstCharacter & "取り込み済み" & result
                End If
        
                'FileDialogオブジェクトを解放する
                Set myOrderFile = Nothing
        

End Sub

通報 ...