Страницы: 1
RSS
Выбор файлов в папке, редактирование мароса
 
Добрый день. Просьба помочь с редактированием рабочего макроса.
Данный макрос дает право на ВЫБОР файлов из указанной вами папки (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
 
Получить список файлов в папке макросом:
http://excelvba.ru/code/FilenamesCollection
 
Ещё здесь посмотрите.
 
находил информацию про открытие файлов в нужной паке, но никак не могу реализовать в данном макросе, просьба помочь с редактированием этого (скопировать-->вставить-->работает)

(автоматическое открытие файлов в заданной папке и продолжение выполнения действий, как уже написано в макросе)

Спасибо!
 
скажите пожалуйста, возможно хоть реализовать данную задачу?!( очень нужно описанный метод.
спасибо
 
можно и Вам вроде ссылки дали.
По вопросам из тем форума, личку не читаю.
 
БМВ, если б выходило, я б не просил помощь. к сожалению в VBA не разбираюсь, поэтому и прошу помощь для выполнения данной задачи, готовый код.
help(
Изменено: SanAlo - 11.01.2018 22:01:01
Страницы: 1
Читают тему
Наверх