(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
通報 ...