Добрый день. Просьба помочь с редактированием рабочего макроса.
Данный макрос дает право на ВЫБОР файлов из указанной вами папки (arFiles = .GetOpenFilename("CSV Files (.csv), *.csv", , "Объединить файлы", , True))
Необходимо переделать код так, что б автоматически выбирались ВСЕ файлы csv по заданному пути, например D:\kaluna\dest и обрабатывались как было.
Большое спасибо за помощь!
Данный макрос дает право на ВЫБОР файлов из указанной вами папки (arFiles = .GetOpenFilename("CSV Files (.csv), *.csv", , "Объединить файлы", , True))
Необходимо переделать код так, что б автоматически выбирались ВСЕ файлы csv по заданному пути, например D:\kaluna\dest и обрабатывались как было.
Большое спасибо за помощь!
Код |
---|
Sub Fizik() Const strStartDir = "c:\kaluna\" 'папка, с которой начать обзор файлов Const strSaveDir = "c:\kaluna\" 'папка, в которую будет предложено сохранить результат Const blInsertNames = True 'вставлять строку заголовка (книга, лист) перед содержимым листа Dim wbTarget As New Workbook, wbSrc As Workbook, shSrc As Worksheet, shTarget As Worksheet, arFiles, _ i As Integer, stbar As Boolean, clTarget As Range On Error Resume Next 'если указанный путь не существует, обзор начнется с пути по умолчанию ChDir strStartDir On Error GoTo 0 With Application 'меньше писанины arFiles = .GetOpenFilename("CSV Files (.csv), *.csv", , "Объединить файлы", , True) If Not IsArray(arFiles) Then End 'если не выбрано ни одного файла Set wbTarget = Workbooks.Add(template:=xlWorksheet) Set shTarget = wbTarget.Sheets(1) .ScreenUpdating = False stbar = .DisplayStatusBar .DisplayStatusBar = True For i = 1 To UBound(arFiles) .StatusBar = "Обработка файла " & i & " из " & UBound(arFiles) Set wbSrc = Workbooks.Open(arFiles(i), local:=True) For Each shSrc In wbSrc.Worksheets If IsNull(shSrc.UsedRange.Text) Then 'лист не пустой Set clTarget = shTarget.Range("A1").Offset(shTarget.Range("A1").SpecialCells(xlCellTypeLastCell).Row, 0) If blInsertNames Then clTarget = " " Set clTarget = clTarget.Offset(1, 0) End If shSrc.UsedRange.Copy clTarget End If Next wbSrc.Close False 'закрыть без запроса на сохранение Next .ScreenUpdating = True .DisplayStatusBar = stbar .StatusBar = False On Error Resume Next 'если указанный путь не существует и его не удается создать, 'обзор начнется с последней использованной папки If Dir(strSaveDir, vbDirectory) = Empty Then MkDir strSaveDir ChDir strSaveDir On Error GoTo 0 'arFiles = .GetSaveAsFilename("Результат", "Excel Files (*.xls), *.xls", , "Сохранить объединенную книгу") 'If VarType(arFiles) = vbBoolean Then 'если не выбрано имя ' GoTo save_err 'Else ' On Error GoTo save_err ' wbTarget.SaveAs arFiles 'End If End save_err: MsgBox "Книга не сохранена!", vbCritical End With End Sub |