Страницы: 1
RSS
Как из 1000+ Excel файлов, удалить одну строку.
 
Привет
Можете пожалуйста помочь?

Подскажите, пожалуйста. реально ли каким то образом, из 1000+ Excel файлов (не открывая их) разом удалить строку?
 
Не открывая - нет. И прям чтобы разом - никак.
Но можно написать макрос, который без дополнительных усилий со стороны пользователя пройдется поочередно по всем файлам в папке и сделает то, что его попросят.

Для этого нужно решить несколько задач:
- перебор и открытие файлов из папки
- удаление строки и сохранение изменений
 
Код
Sub Обработать_файлы()
    Dim aFiles As Variant
    aFiles = ShowFileDialog()
    If IsEmpty(aFiles) Then Exit Sub
    
    Dim vFile As Variant
    For Each vFile In aFiles
        JobFile vFile
    Next
End Sub

Sub JobFile(ByVal sFile As String)
    Dim wb As Workbook
    Set wb = Workbooks.Open(sFile)
    JobWb wb
    
    wb.Close True
End Sub

Sub JobWb(wb As Workbook)
    Dim flag As Boolean
    Dim sh As Worksheet
    For Each sh In wb.Worksheets
        flag = False
        
        'Только для листов с определёнными именами
        Select Case sh.Name
        Case "Лист1", "Лист2"
            flag = True
        End Select
    
        'Для первых двух листов
        Select Case sh.Index
        Case 1, 2
            flag = True
        End Select
    
        'Для всех листов
        flag = True
    
        If flag Then
            JobSh sh
        End If
    Next
End Sub

Sub JobSh(sh As Worksheet)
    sh.Rows(1).Delete
End Sub

Function ShowFileDialog() As Variant
    Dim oFD As FileDialog
    Dim x, lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Выбрать файлы отчетов" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xla*", 1 'устанавливаем возможность выбора только файлов Excel
'        .Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 1 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = ThisWorkbook.Path & "\" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If oFD.Show = 0 Then Exit Function 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        Dim arr As Variant
        ReDim arr(1 To .SelectedItems.Count)
        For lf = 1 To .SelectedItems.Count
            arr(lf) = .SelectedItems(lf) 'считываем полный путь к файлу
        Next
    End With
    ShowFileDialog = arr
End Function
Страницы: 1
Наверх