人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

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

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

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


●質問者: clinejp
●カテゴリ:コンピュータ インターネット
✍キーワード:VBA エクセル オープン ダブルクリック ファイル
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● SALINGER
●60ポイント

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


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

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/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ