Имеется файл с большим количеством строк такого типа:
Требуется разбить файл на несколько по первому столбцу (для каждого филиала свой файлик). С VBA сталкиваюсь впервые, подскажите, пожалуйста, с чего начать, куда копать.. Возможно у кого-то уже есть что-то либо подобное. Буду очень благодарен за помощь!
Всем доброго времени суток!
Имеется файл с большим количеством строк такого типа:
Требуется разбить файл на несколько по первому столбцу (для каждого филиала свой файлик). С VBA сталкиваюсь впервые, подскажите, пожалуйста, с чего начать, куда копать.. Возможно у кого-то уже есть что-то либо подобное. Буду очень благодарен за помощь!evgen7e
Sub Путь_к_файлу() Dim FilesToOpen Dim OpenPath As String OpenPath = CStr(ThisWorkbook.Path) 'ChDrive "C:\Program Files" ChDrive OpenPath ChDir OpenPath FilesToOpen = Application.GetOpenFilename _ ("Excel files(*.xls*),*.xls*", 1, "Выбрать файл", , False) If TypeName(FilesToOpen) = "Boolean" Then MsgBox "Файл не выбран!" Exit Sub End If Cells(2, "D") = FilesToOpen End Sub Sub Получить() Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual Dim Dict As Object Dim Links As Variant Set Dict = CreateObject("scripting.dictionary"): Dict.comparemode = 1
With Sheets("Лимиты") lr = .Cells(.Rows.Count, "K").End(xlUp).Row If lr > 1 Then For i = 2 To lr If Not Dict.exists(.Cells(i, "K").Value) And .Cells(i, "K").Value <> "" Then Dict.Add (.Cells(i, "K").Value), 1 Next End If End With n = 0 For Each vkey In Dict.Keys n = n + 1 Application.StatusBar = CStr(n) + " " + vkey 'Создаем файлы Set new_wb = Workbooks.Add
lr = Cells(Rows.Count, "K").End(xlUp).Row For i = lr To 2 Step -1 If Cells(i, "K") <> vkey Then Rows(i).Delete Next Sheets(1).Columns("K").Delete ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
new_wb.SaveAs ThisWorkbook.Path + "\" + vkey + ".xlsx" new_wb.Close Next Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "Отчёты успешно созданы!", vbInformation, "Информация" End Sub
[/vba]
Что-то подобное: [vba]
Код
Sub Путь_к_файлу() Dim FilesToOpen Dim OpenPath As String OpenPath = CStr(ThisWorkbook.Path) 'ChDrive "C:\Program Files" ChDrive OpenPath ChDir OpenPath FilesToOpen = Application.GetOpenFilename _ ("Excel files(*.xls*),*.xls*", 1, "Выбрать файл", , False) If TypeName(FilesToOpen) = "Boolean" Then MsgBox "Файл не выбран!" Exit Sub End If Cells(2, "D") = FilesToOpen End Sub Sub Получить() Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlCalculationManual Dim Dict As Object Dim Links As Variant Set Dict = CreateObject("scripting.dictionary"): Dict.comparemode = 1
With Sheets("Лимиты") lr = .Cells(.Rows.Count, "K").End(xlUp).Row If lr > 1 Then For i = 2 To lr If Not Dict.exists(.Cells(i, "K").Value) And .Cells(i, "K").Value <> "" Then Dict.Add (.Cells(i, "K").Value), 1 Next End If End With n = 0 For Each vkey In Dict.Keys n = n + 1 Application.StatusBar = CStr(n) + " " + vkey 'Создаем файлы Set new_wb = Workbooks.Add
lr = Cells(Rows.Count, "K").End(xlUp).Row For i = lr To 2 Step -1 If Cells(i, "K") <> vkey Then Rows(i).Delete Next Sheets(1).Columns("K").Delete ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
new_wb.SaveAs ThisWorkbook.Path + "\" + vkey + ".xlsx" new_wb.Close Next Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "Отчёты успешно созданы!", vbInformation, "Информация" End Sub