Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Открытие всех файлов из всех поддиректорий

Автор Shurov, 31.07.2012, 20:45

« назад - далее »

Shurov

не бейте ногами, если топик был... времени мало + конец рабочего дня

помогите открыть в выбрарнной директории все файлы, включая файлы в поддиректориях

есть код для открытия файлов и последующей их обработки средствами ВБА:
   FName = Application.GetOpenFilename(filefilter:="Excel Files,*.xl*", MultiSelect:=True)

как в него дописать возможность работы с подпапками? или любой другой код, который сможет это сделать?

kuklp

Например так:
Sub www()
   Application.ScreenUpdating = False
   processFolder GetFolderPath
   Application.ScreenUpdating = True
End Sub

Private Sub processFolder(fName As String)
   Dim fso As Object, file As Object, wb As Workbook, ws As Worksheet
   Set fso = CreateObject("scripting.filesystemobject")
   Set fso = fso.getfolder(fName)
   For Each file In fso.Files
       If file.Name Like "*.xls*" Then
           Set wb = Workbooks.Open(file)
           ' тут делаете все, что хотите с файлом
           wb.Close True
       End If
   Next
   '   Для каждой подпапки в папке просто вызывается эта же подпрограмма!
   For Each file In fso.subfolders
       processFolder file.Path
   Next
End Sub

Function GetFolderPath(Optional ByVal Title As String = "выберите папку", Optional ByVal InitialPath As String = "c:\") As String
   Dim PS$
   GetFolderPath = "": PS = Application.PathSeparator
   With Application.FileDialog(msoFileDialogFolderPicker)
       .ButtonName = "Выбор": .Title = Title: .InitialFileName = InitialPath
       If .Show = -1 Then GetFolderPath = .SelectedItems(1): If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS
   End With
End Function


Я, как всегда, чертовски адекватен... Email: pilipnikop@yandex.ua WM Z206653985942, R334086032478, U238399322728, E332314026771

Shurov