Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] Разбор листа Excel по строкам в отдельные файлы

Ответить
Настройки темы
VBA - [решено] Разбор листа Excel по строкам в отдельные файлы

Аватара для Debugger

Ветеран


Сообщения: 867
Благодарности: 70


Конфигурация

Профиль | Отправить PM | Цитировать


С VBA сталкиваюсь в первый раз, но тут слезно попросили помочь и я согласился. Цель такая - раздербанить Excel-евский файл по строкам в отдельные файлы, причем у каждого файла должна быть шапка (первая строка) из оригинального файла. Примеров скриптов выполняющих такую работу в интернете навалом, но все они выдергивают только по одной строке. Понадергав то тут то там и почитав описания команд наваял примерно такое:
Код: Выделить весь код
Sub proga()
Application.ScreenUpdating = False
For i = 2 To Cells.SpecialCells(xlCellTypeLastCell).Row
        Dim r1 As Range, r2 As Range, myMultiAreaRange As Range
        Set r1 = Range(Cells(1, 1), Cells(1, 12))
        Set r2 = Range(Cells(i, 1), Cells(i, 12))
        Set myMultiAreaRange = Union(r1, r2)
        myMultiAreaRange.Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
    ActiveWorkbook.SaveAs Filename:= _
        "C:\excel_files\stroka" & i & ".xls", FileFormat:=xlNormal
    ActiveWorkbook.Close
Next
Application.ScreenUpdating = True
End Sub
То есть выдергивается первая строка и вторая, первая и третья, первая и четвертая и так далее. Но в созданную книгу они не копируются, т.е. все созданные файлы сохраняются пустыми. Если выделять только одну строку то все работает. Причем при отладке скрипта видно что в буфер обмена строки попадают, и если переключиться на созданную книгу и нажать Ctrl+V то все вставляется. Гугл уже не помогает, а сроки поджимают.

Отправлено: 11:21, 14-03-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Debugger, как-то так:
Код: Выделить весь код
Option Explicit

Sub proga()
    Dim i As Long
    Dim objUsedRange As Range
    
    
    Set objUsedRange = ThisWorkbook.ActiveSheet.UsedRange
    
    For i = 2 To objUsedRange.Rows.Count
        With Application.Workbooks.Add
            Union(objUsedRange.Rows(1), objUsedRange.Rows(i)).Copy .ActiveSheet.Cells(1, 1)
            
            .SaveAs "C:\excel_files\stroka" & CStr(i) & ".xls"
            .Close
        End With
    Next
End Sub
Отчего такое странное техзадание?

Отправлено: 12:58, 14-03-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Debugger

Ветеран


Сообщения: 867
Благодарности: 70

Профиль | Отправить PM | Цитировать


Спасибо, работает. Да черт его знает, человек работает в УЖКХ, таблица это список затрат на каждый дом в городе. Каждый файл по отдельности потом куда-то рассылают. Я не в курсе специфики их работы (и слава богу).

Отправлено: 13:28, 14-03-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Debugger, спасибо, ясно. Я себе примерно такое и представлял.

Отправлено: 15:46, 14-03-2012 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] Разбор листа Excel по строкам в отдельные файлы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Не снимается защита листа в Excel doznet Microsoft Office (Word, Excel, Outlook и т.д.) 3 17-12-2010 23:37
FreeBSD - как в rtorrent качать только отдельные файлы с раздачи? Kerberos_2.0 Общий по FreeBSD 1 28-11-2010 14:10
2003/XP/2000 - Excel и mdb файлы GhostKU Microsoft Office (Word, Excel, Outlook и т.д.) 0 26-08-2010 16:49
C/C++ - [решено] Помогите, плиз, вынести классы в отдельные файлы. Oleg_SK Программирование и базы данных 4 05-06-2010 18:15
2007 - Excel | Как снять защиту к некоторым функциям в книге при включенной "Защита листа"? MaxRAF Microsoft Office (Word, Excel, Outlook и т.д.) 2 10-03-2010 03:59




 
Переход