エクセルVBAの質問です

特定の文字から始まるファイルのみをリストボックスにAddItemで追加してファイル名を表示させるにはどうしたらよいでしょうか。
例)
あるフォルダに、
20080612******
とたくさんあって、これを表示させたい。

その後にダブルクリックすると該当ファイルがオープンされるというものを作ろうと思っています。

現在考えたのは、Left関数で8文字までを抽出して、if マッチしていたら then 表示

というものなのですが、オープンしたファイルを連続的にAddItemする方法が分かりません。

ファイルを開くから、一つ一つ加えていくのならできそうなんですが。

この連続的にAddItemする方法を教えてください。

また、ダブルクリックしてオープンさせることもできそうなんですが、これを複数選択して連続してファイルをオープンする方法が分かりません。

この2点について教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/06/12 02:55:19
  • 終了:2008/06/19 03:00:02

回答(1件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692008/06/12 10:57:54

ポイント60pt

昨日、似たような回答をしたのでそれを利用して、一つのサンプルを作ってみました。


シートにリストボックス、とボタンを作ってください。

CommandButton1はリストボックスに指定したフォルダの中から最初の8文字が日付になるファイルを

抽出してリストボックスに登録しています。例えばここから日付型に変換して何日から~何日までの

範囲を抽出するといったように発展させることができます。

リストボックスを複数選択して、ダブルクリックすることで選択されたファイルが開きます。

オープンするファイルの種類は書いてないのでExcelにしています。


リストボックスにはファイル名がそのまま入りますが、前から8文字などにするには、

前回の質問にように保存用のシートを用意して、リストボックスに登録と同時に書き込めばいいですね。

Option Explicit

'ファイルの入っているフォルダのパスに変えてください
Const myPath As String = "C:\Documents and Settings\hogehoge\デスクトップ\test"

Private Sub CommandButton1_Click()
    Dim FSO
    Dim myFile
    Dim strDay As String
    
    ListBox1.MultiSelect = fmMultiSelectMulti
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    ListBox1.Clear
    
    For Each myFile In FSO.GetFolder(myPath).Files
        '日付かどうかを判断
        If Len(myFile.Name) >= 8 Then
            strDay = Left(myFile.Name, 4) & "/" & Mid(myFile.Name, 5, 2) & "/" & Mid(myFile.Name, 7, 2)
            If IsDate(strDay) Then
                ListBox1.AddItem myFile.Name
            End If
        End If
    Next
    
    Set FSO = Nothing
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            Workbooks.Open (myPath & "\" & ListBox1.List(i))
        End If
    Next
End Sub

http://q.hatena.ne.jp/

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません