powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Разделить книгу Excel на листы
25 сообщений из 25, страница 1 из 1
Разделить книгу Excel на листы
    #38551904
Фотография Случайная гостья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток всем. Есть такая задача - разбить книгу 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
Разделить книгу Excel на листы
    #38551920
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня не появляется.
файл в студию
...
Рейтинг: 0 / 0
Разделить книгу Excel на листы
    #38551989
Фотография Случайная гостья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что в файле и у меня все работает... Но когда я начинаю перебирать другие файлы, то происходит такая ошибка с метод фейлд.

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

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

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



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

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

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

Каким образом обойтись без команды s.Copy?
...
Рейтинг: 0 / 0
Разделить книгу Excel на листы
    #38552924
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Случайная гостьяКаким образом обойтись без команды s.Copy?просто стереть ее. в вашем коде она не делает ничего полезного
...
Рейтинг: 0 / 0
Разделить книгу Excel на листы
    #38552937
Фотография Случайная гостья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Разделить книгу Excel на листы
    #38552948
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Случайная гостьяА вот если ее убрать - то у меня вместо одного листа в каждом файле получается столько листов, сколько в исходном файле.а если ее не убирать, будет .... то же самое!
Код: vbnet
1.
2.
s.Copy 'копирует ИСХОДНЫЙ лист в новую книгу
s.SaveAs wb.Path & "\" & s.Name & ".xls" 'сохраняет ИСХОДНЫЙ ЖЕ файл (а не новый)

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

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

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

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


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