プロが教えるわが家の防犯対策術!

お世話になります。指定のフォルダーではなく自分で選択したフォルダー内の"csvファイル"の総数をカウントしたいのですがうまくいきません。アドバイスお願いいたします。

With Application.FileSearch
.LookIn = Application.GetOpenFilename
.Filename = "*.csv"
If .Execute > 0 Then
MsgBox .FoundFiles.Count & "個"
End If
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
End With

A 回答 (2件)

こんにちは。

KenKen_SP です。

Wendy02 さんのものは、「フォルダ選択ダイアログ」を使っていて、ご希望
の「フォルダの選択」という動作にはピッタリだと思います。

しかし、フォルダ内に CSV ファイルがあることをダイアログで確認できる、
「GetOpenFilename メソッドを使いたい」ということでしょうか?

FileSearch オブジェクトの LookIn プロパティーには「フォルダのパス」
を設定しなければなりませんので、GetOpenFilename メソッドで得られた
「ファイルのパス」をそのまま設定することはできません。

したがって、得られた「ファイルのパス」から「フォルダのパス」を切り
出す必要があります。以下のサンプルは InStrRev 関数を使った例です。


strPATH = Application.GetOpenFilename("csvファイル (*.csv), *.csv")
If UCase$(strPATH) = "FALSE" Then
  Exit Sub
End If

'InStrRev関数 - Excel2000以上で有効
'ファイル名からフォルダパスを切り出し
strPATH = Mid$(strPATH, 1, InStrRev(strPATH, "\") - 1)

With Application.FileSearch
  .LookIn = strPATH
  .Filename = "*.csv"
  .Execute
  MsgBox .FoundFiles.Count & "個"
  If .FoundFiles.Count > 0 Then
    For i = 1 To .FoundFiles.Count
      MsgBox .FoundFiles(i)
    Next i
  End If
End With
    • good
    • 0
この回答へのお礼

こんばんは、いつも回答ありがとうございます。上記例で解決できました!感謝しています。ありがとうございました。

お礼日時:2005/10/30 23:20

こんばんは。


以下のようなサンプルはいかがでしょうか?

'--------------------------------
Sub myFileSearchTest()
  Dim myFolder As Object
  Dim myFolderItem As String
  Dim Msg As String
  Dim i As Long
  Set myFolder = CreateObject("Shell.Application"). _
  BrowseForFolder(0, "フォルダを選択してください", 0, "C:\")
  If Not myFolder Is Nothing Then
   myFolderItem = myFolder.Items.Item.Path
   Else
   Exit Sub
  End If
  With Application.FileSearch
   .LookIn = myFolderItem
   .FileName = "*.csv"
   If .Execute > 0 Then
     Msg = .FoundFiles.Count & "個"
   End If
   For i = 1 To .FoundFiles.Count
     Msg = Msg & vbCrLf & .FoundFiles(i)
   Next i
  End With
  Set myFolder = Nothing
  MsgBox Msg
End Sub

'--------------------------------

この回答への補足

いつも回答いただきましてありがとうございます。
下記メゾットで自分でファイルを選択してファイル数をサーチする事は可能でしょうか?
OPENFILE = Application.GetOpenFilename("csvファイル (*.csv), *.csv")

補足日時:2005/10/30 16:02
    • good
    • 0
この回答へのお礼

ありがとうございます。無事解決できました。

お礼日時:2005/10/30 23:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!