Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Разделить книгу Excel на листы / 25 сообщений из 25, страница 1 из 1
06.02.2014, 14:33
    #38551904
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Доброго времени суток всем. Есть такая задача - разбить книгу Excel на листы, т.е. каждый лист сохранить в отдельном новом файле Excel, названном по имени листа.
Откопала на просторах интернета следующий код:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub SplitSheets2()

Dim s As Worksheet
Dim wb As Workbook
Set wb = ActiveWorkbook
For Each s In wb.Worksheets
s.Copy
s.SaveAs wb.Path & "\" & s.Name & ".xls"
Next
End Sub



Модератор: Учимся использовать тэги оформления кода - FAQ

Код не работает, т.к. на строке s.Copy появляется ошибка про Method failed.
Что делать?
...
Рейтинг: 0 / 0
06.02.2014, 14:40
    #38551920
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
у меня не появляется.
файл в студию
...
Рейтинг: 0 / 0
06.02.2014, 15:08
    #38551989
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Дело в том, что в файле и у меня все работает... Но когда я начинаю перебирать другие файлы, то происходит такая ошибка с метод фейлд.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub SplitSheets2()
    Dim s As Worksheet
    Dim Wb As Workbook
    With Application.FileDialog(msoFileDialogFilePicker)

      .InitialFileName = "P:\"
      If .Show = False Then Exit Sub
   
        For Each iFile In .SelectedItems
            Set Wb = Workbooks.Open(Filename:=iFile, local:=True)
            For Each s In Wb.Worksheets
            s.Copy
            s.SaveAs Wb.Path & "\" & s.Name & ".xls"
            Next
        Next
    End With
End Sub




Попробуйте вот такой код протестировать.
...
Рейтинг: 0 / 0
06.02.2014, 15:17
    #38552003
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
В общем эта ошибка то появляется, то нет... что может быть такого в файлах или в листах? Кто сталкивался?
...
Рейтинг: 0 / 0
06.02.2014, 15:48
    #38552064
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
а зачем там вообще s.Copy?
...
Рейтинг: 0 / 0
06.02.2014, 15:50
    #38552070
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Shocker.Proа зачем там вообще s.Copy?
Ну чтобы скопировать лист, а затем сохранить его в новом файле. Можно как-то по-другому?
...
Рейтинг: 0 / 0
06.02.2014, 16:10
    #38552109
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Так сохраняется-то не копия, а оригинал, итого - зачем команда s.Copy - непонятно
...
Рейтинг: 0 / 0
06.02.2014, 16:14
    #38552118
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
...
Рейтинг: 0 / 0
06.02.2014, 16:45
    #38552172
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Shocker.Proи вообще
http://www.sql.ru/forum/864869/sohranenie-listov-v-raznye-fayly

в данной теме решение не найдено, все равно ругается на copy.
...
Рейтинг: 0 / 0
06.02.2014, 18:35
    #38552325
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Случайная гостьячто может быть такого в файлах или в листах?Могут быть модули VBA (макросы), элементы управления. При создании копии такого листа может потребоваться перекомпиляция проектов VBA.

Вам намекнули, что команда s.Copy вообще не нужна. Попробовали?
...
Рейтинг: 0 / 0
06.02.2014, 19:51
    #38552462
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Судя по вопросу в первом посте проблема скорее не в Copy, а в SaveAs, т.к. сохраняется не то, что создалось:
Код: vbnet
1.
2.
s.Copy
ActiveWorkbook.SaveAs Wb.Path & "\" & s.Name & ".xls", Wb.Fileformat
...
Рейтинг: 0 / 0
07.02.2014, 10:30
    #38552890
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
The_PristСудя по вопросу в первом посте проблема скорее не в Copy, а в SaveAs, т.к. сохраняется не то, что создалось:
Код: vbnet
1.
2.
s.Copy
ActiveWorkbook.SaveAs Wb.Path & "\" & s.Name & ".xls", Wb.Fileformat



В первом посте написано, что именно на строке s.Copy появляется ошибка про Method failed. Без вариантов.
...
Рейтинг: 0 / 0
07.02.2014, 10:34
    #38552899
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
КазанскийСлучайная гостьячто может быть такого в файлах или в листах?Могут быть модули VBA (макросы), элементы управления. При создании копии такого листа может потребоваться перекомпиляция проектов VBA.

Вам намекнули, что команда s.Copy вообще не нужна. Попробовали?

Модулей нет, кроме описанного в первом посте.

Каким образом обойтись без команды s.Copy?
...
Рейтинг: 0 / 0
07.02.2014, 10:46
    #38552924
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Случайная гостьяКаким образом обойтись без команды s.Copy?просто стереть ее. в вашем коде она не делает ничего полезного
...
Рейтинг: 0 / 0
07.02.2014, 10:58
    #38552937
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Shocker.ProСлучайная гостьяКаким образом обойтись без команды s.Copy?просто стереть ее. в вашем коде она не делает ничего полезного

А вот если ее убрать - то у меня вместо одного листа в каждом файле получается столько листов, сколько в исходном файле. Но файлы копируются и называются по имени листов. Ошибок никаких нет.




Вот вариант без s.copy, но в этом случае ошибка возникает на строке s.Cells.Select, пишет, что метод Select завершен неверно.
Что я делаю не так???

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Sub SplitSheets2()
    Dim s As Worksheet
    Dim Wb As Workbook
    With Application.FileDialog(msoFileDialogFilePicker)

      .InitialFileName = "P:\Ñïðàâêà\òåñò\"
      If .Show = False Then Exit Sub
   
        For Each iFile In .SelectedItems
            Set Wb = Workbooks.Open(Filename:=iFile, local:=True)
            Wb.Activate
            For Each s In Wb.Worksheets
    
            s.Cells.Select
            Selection.Copy
            Workbooks.Add
            ActiveSheet.Paste
            Application.CutCopyMode = False
            ActiveWorkbook.SaveAs Filename:=Wb.Path & "\" & s.Name & ".xls", FileFormat:= _
                    xlOpenXMLWorkbook, CreateBackup:=False
            ActiveWindow.Close
                             
            Next
        Next
    End With
End Sub
...
Рейтинг: 0 / 0
07.02.2014, 11:07
    #38552948
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Случайная гостьяА вот если ее убрать - то у меня вместо одного листа в каждом файле получается столько листов, сколько в исходном файле.а если ее не убирать, будет .... то же самое!
Код: vbnet
1.
2.
s.Copy 'копирует ИСХОДНЫЙ лист в новую книгу
s.SaveAs wb.Path & "\" & s.Name & ".xls" 'сохраняет ИСХОДНЫЙ ЖЕ файл (а не новый)

говорю же, в вашем коде s.Copy ничего полезного не делает, она только создает новые книги, которые вы можете сохранить потом вручную
...
Рейтинг: 0 / 0
07.02.2014, 11:18
    #38552959
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
И вообще, долго ли мы будем переливать из пустого в порожнее?
Я дал ссылку, там написано, что надо сделать
Вы с чего-то решили, то "в данной теме решение не найдено", видимо даже не читали ее
Вот ваш код - он рабочий.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub SplitSheets2()

Dim s As Worksheet
Dim wb As Workbook
Set wb = ActiveWorkbook
For Each s In wb.Worksheets
s.Copy
ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & ".xls"
Next

End Sub

если у вас возникает проблема с s.Copy - это ваша локальная проблема. Файл вы давать отказываетесь, так что ничем помочь не можем
...
Рейтинг: 0 / 0
07.02.2014, 11:55
    #38553032
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Shocker.ProИ вообще, долго ли мы будем переливать из пустого в порожнее?
Я дал ссылку, там написано, что надо сделать
Вы с чего-то решили, то "в данной теме решение не найдено", видимо даже не читали ее
Вот ваш код - он рабочий.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub SplitSheets2()

Dim s As Worksheet
Dim wb As Workbook
Set wb = ActiveWorkbook
For Each s In wb.Worksheets
s.Copy
ActiveWorkbook.SaveAs wb.Path & "\" & s.Name & ".xls"
Next

End Sub

если у вас возникает проблема с s.Copy - это ваша локальная проблема. Файл вы давать отказываетесь, так что ничем помочь не можем

С чего вы взяли, что я не читала? Я прочитала, что SaveAs можно применить к листу, что я и попробовала сделать - все равно сохраняется вся книга, листы по отдельности не копируются. Файл завтра из дома приложу.
...
Рейтинг: 0 / 0
07.02.2014, 11:58
    #38553037
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Тогда приведите скрин этой чудесной ошибки. Кто его знает что Вы там и как пытаетесь. Может книга защищена, может у Вас еще какие коды выполняются(на активацию листа, например), может еще чего. Сама строка s.Copy не должна в штатной ситуации приводить к ошибке.
...
Рейтинг: 0 / 0
07.02.2014, 12:00
    #38553044
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Случайная гостьяС чего вы взяли, что я не читала? Я прочитала, что SaveAs можно применить к листу, что я и попробовала сделать - все равно сохраняется вся книга, листы по отдельности не копируются. Файл завтра из дома приложу.Я вот тоже вижу, что не читали. И я, Shocker.Pro советуем как раз сохранять именно один лист. Вы хоть в строки вчитайтесь, раз в VBA ноль:
Код: vbnet
1.
2.
s.Copy 'копируем лист в новую книгу. Книга создается автоматом с один этим листом
ActiveWorkbook.SaveAs Wb.Path & "\" & s.Name & ".xls", Wb.Fileformat 'сохраняет именно созданную новую книгу с единственным листом, а не книгу с исходным листом
...
Рейтинг: 0 / 0
09.02.2014, 20:17
    #38555072
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
The_PristТогда приведите скрин этой чудесной ошибки. Кто его знает что Вы там и как пытаетесь. Может книга защищена, может у Вас еще какие коды выполняются(на активацию листа, например), может еще чего. Сама строка s.Copy не должна в штатной ситуации приводить к ошибке.

Прикладываю скриншот ошибки и файл. Макрос в файле.
...
Рейтинг: 0 / 0
10.02.2014, 11:40
    #38555419
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Как видно из выполнения макроса на вашем файле, ошибка возникает при копировании скрытого листа "BExRepositorySheet". Либо не копируйте этот лист, либо делайте его видимым перед копированием.
...
Рейтинг: 0 / 0
10.02.2014, 12:05
    #38555466
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Shocker.ProКак видно из выполнения макроса на вашем файле, ошибка возникает при копировании скрытого листа "BExRepositorySheet". Либо не копируйте этот лист, либо делайте его видимым перед копированием.

Спасибо! Без этого листа все работает!!!
...
Рейтинг: 0 / 0
10.02.2014, 12:15
    #38555482
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
а ведь с самого начала файл просил, ответ был бы немедленно
...
Рейтинг: 0 / 0
10.02.2014, 12:59
    #38555557
Случайная гостья
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить книгу Excel на листы
Shocker.Proа ведь с самого начала файл просил, ответ был бы немедленно

Мне почему-то казалось, что скопировать код VBA в новую книгу Excel намного проще, чем скачивать файл.
Но профессионалу конечно виднее)))
В любом случае очень-очень много спасибо:) Выручили невероятно.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Разделить книгу Excel на листы / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]