Помогите разбить один большой файл на несколько маленьких. В файле несколько отдельных таблиц для разных клиентов. Таблицы отделены разрывом страниц. В названиях конечных файлов нужно отобразить название клиента и ИНН, то есть содержание ячеек C4 и C5.
Помогите разбить один большой файл на несколько маленьких. В файле несколько отдельных таблиц для разных клиентов. Таблицы отделены разрывом страниц. В названиях конечных файлов нужно отобразить название клиента и ИНН, то есть содержание ячеек C4 и C5.card_in
Приходится вручную, контрагентов гораздо больше. Файл как пример. Каждому клиенту надо отправить свой файл. И так каждый месяц, кому то раз в квартал. как организовать рассылку я вроде разобрался. Осталось понять как разбить файл. Как написать макрос? Нужно чтобы он искал разрыв страницы - сохранял в отдельный файл и называл именем контрагента.
Приходится вручную, контрагентов гораздо больше. Файл как пример. Каждому клиенту надо отправить свой файл. И так каждый месяц, кому то раз в квартал. как организовать рассылку я вроде разобрался. Осталось понять как разбить файл. Как написать макрос? Нужно чтобы он искал разрыв страницы - сохранял в отдельный файл и называл именем контрагента.card_in
Сообщение отредактировал card_in - Воскресенье, 20.01.2013, 04:00
сорри, у меня - небольшой перерывчик до понедельника (после обеда освобожусь). так что всех желающих помочь прошу на меня не оглядываться спасибо заранее за понимание
сорри, у меня - небольшой перерывчик до понедельника (после обеда освобожусь). так что всех желающих помочь прошу на меня не оглядываться спасибо заранее за понимание ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Sub ertert() Dim fn As String, wsh As Worksheet, wb As Object Dim r As Range, rr As Range, s As String, ss As String Application.ScreenUpdating = False ActiveSheet.Copy Before:=Sheets(1) Set wsh = ActiveSheet: s = "ВСЕГО": ss = "Контрагент" With wsh.UsedRange.Columns("B:B") Do Set r = .Find(s, lookat:=xlWhole) If Not r Is Nothing Then With .Cells(1, 1).Resize(r.Row) Set rr = .Find(ss, lookat:=xlWhole) If Not rr Is Nothing Then fn = ThisWorkbook.Path & "\" & Replace(rr(1, 2), """", "") & "_" & rr(2, 2) & ".xls" Set wb = Workbooks.Add .EntireRow.Copy wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteAll wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteColumnWidths wb.SaveAs fn, xlNormal: DoEvents: wb.Close End If .EntireRow.Delete End With End If Loop Until r Is Nothing End With With Application .DisplayAlerts = False: wsh.Delete: .DisplayAlerts = True .ScreenUpdating = True End With: Set wb = Nothing End Sub
[/vba]
из закромов
[vba]
Код
Sub ertert() Dim fn As String, wsh As Worksheet, wb As Object Dim r As Range, rr As Range, s As String, ss As String Application.ScreenUpdating = False ActiveSheet.Copy Before:=Sheets(1) Set wsh = ActiveSheet: s = "ВСЕГО": ss = "Контрагент" With wsh.UsedRange.Columns("B:B") Do Set r = .Find(s, lookat:=xlWhole) If Not r Is Nothing Then With .Cells(1, 1).Resize(r.Row) Set rr = .Find(ss, lookat:=xlWhole) If Not rr Is Nothing Then fn = ThisWorkbook.Path & "\" & Replace(rr(1, 2), """", "") & "_" & rr(2, 2) & ".xls" Set wb = Workbooks.Add .EntireRow.Copy wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteAll wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteColumnWidths wb.SaveAs fn, xlNormal: DoEvents: wb.Close End If .EntireRow.Delete End With End If Loop Until r Is Nothing End With With Application .DisplayAlerts = False: wsh.Delete: .DisplayAlerts = True .ScreenUpdating = True End With: Set wb = Nothing End Sub