|
▼LALA さん:
こんにちは。暑いですねぇ。
フォルダが、C:\過去のリスト
ファイル名が
CheckBox1用;1から5.csv
CheckBox2用;6から10.csv
CheckBox3用;11から15.csv
CheckBox4用;16から20.csv
CheckBox5用;21から25.csv
ですね。了解です。
>セルの中に、この名前をもう書いておいた方がいいんでしょうか?
もし、ファイル名が変更になる場合があるとすれば、
・VBAコードを変更する。
・セルの値を変更する。
といった方法になります(もちろん、そのほかのやりかたもありますが)
プログラムは、あまりさわりたくないということから後者で対応するケースが少なくないですね。
Worksheets("Sheet1")の B1:B5 に、これら5つのファイル名があるということにしましょう。
>チェックボックスのキャプションにCSVの名前が入っているのかな?
>↑
>これどういう意味ですか?
チェックボックスの □ の右側 ユーザーフォームにコントロールを追加すると たとえば
CheckBox1 といった文字列が表示されますね。これがキャプションです。
この文字列は任意のものにすることができますので、これをファイル名にしておいて
チェックボックスが選ばれたら、ファイル名を、このキャプションからもってくる方法も
あるということです。でも、B1:B5 からもってくることにしましたから、これは忘れてください。
>csv じゃなく xls では だめですか?
大丈夫ですよ。 B1:B5 の記入を ○○○.csv ではなく □□□.xls にしておけばOKです。
xlsとcsvが混在していてもいいです。
ということで、以下。
まず基本形。
Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
Workbooks.Open "C:\過去のリスト\" & ThisWorkbook.Worksheets("Sheet1").Range("B1").Value
End If
If CheckBox2.Value = True Then
Workbooks.Open "C:\過去のリスト\" & ThisWorkbook.Worksheets("Sheet1").Range("B2").Value
End If
If CheckBox3.Value = True Then
Workbooks.Open "C:\過去のリスト\" & ThisWorkbook.Worksheets("Sheet1").Range("B3").Value
End If
If CheckBox4.Value = True Then
Workbooks.Open "C:\過去のリスト\" & ThisWorkbook.Worksheets("Sheet1").Range("B4").Value
End If
If CheckBox5.Value = True Then
Workbooks.Open "C:\過去のリスト\" & ThisWorkbook.Worksheets("Sheet1").Range("B5").Value
End If
End Sub
でも、これでは、あまりに煩雑なのでブラッシュアップ。
あわせて、フォルダに本当にそのファイルがあるかどうかのチェックも加えてあります。
Private Sub CommandButton1_Click()
Dim myPath As String
Dim fname As Variant
Dim i As Long
Dim myName As String
myPath = "C:\過去のリスト\"
fname = ThisWorkbook.Worksheets("Sheet1").Range("B1:B5").Value '指定ファイル名配列
For i = 1 To 5
If Me.Controls("CheckBox" & i).Value = True Then
myName = fname(i, 1)
If Dir(myPath & myName) = "" Then
MsgBox "以下のファイルがみあたりませんよ" & vbLf & myPath & myName
Else
Workbooks.Open myPath & myName
End If
End If
Next
End Sub
|
|