|
こんにちは
GetOpenFilenameを用いて複数のファイル(CSVファイル)を開いてその開いたファイルに
対して処理を行っているのですが、
GetOpenFilename実行時にファイル選択ウインドウにて、
開くファイルを選択したときに、右クリックにて開くをした際に
1つのファイルのみ選択しているときは正常に処理を終えるのですが、
2つ以上のファイルを選択していると処理がとまってしまいます。
右クリックをできないようにするという手もあるかとは思いますが、
右クリックでも処理が正常にすすむようにしたいなぁと思っています。
どうかいい知恵があったら教えてください。
Sub test()
Dim vFileName As Variant
Dim sDefaultPath As String, iFileName As String
'デフォルトパスの設定(必要に応じて)
sDefaultPath = "C:\"
ChDrive sDefaultPath
ChDir sDefaultPath
'Excelファイル名の入力(複数選択)
vFileName = Application.GetOpenFilename( _
fileFilter:=StrConv("CSV ファイル (*.CSV),*.x*," & _
"すべてのファイル (*.*),*.*", vbNarrow), filterIndex:=1, _
MultiSelect:=True)
'キャンセルされたかチェック(キャンセル時MSG出力)
If VarType(vFileName) = 11 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
'複数ファイル選択
Dim i As Integer
Dim MSG As String
For i = 1 To UBound(vFileName)
Workbooks.Open FileName:=vFileName(i) '←ここで処理が完了しているよう
'です。
iFileName = ActiveSheet.Name
'データ処理
Windows("test.xls").Activate
Sheets("ワーク").Select
ActiveCell.FormulaR1C1 = iFileName 'ファイル名をA列に記述
ActiveCell.Offset(1, 0).Range("A1").Select
'(データ量が多すぎ、'データ処理以前で処理が中止されるので以後の処理を割愛)
Windows(iFileName & ".csv").Activate
ActiveWindow.Close
Next i
MsgBox "ファイル数:" & UBound(vFileName) & "個 が選択されました。"
End Sub
|
|