Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2013, 15:00   #11
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
По умолчанию

Вам спасибо!
Столкнулся еще с некоторой проблемой.
Есть макрос, который из перечня файлов Excel копирует все первые листы книг в активную (сам макрос ниже).
Можно его немного поправить так, чтобы он копируемые листы переименовывал на заданные имена или просто присваивал им порядковые (например, 1,2,3,4,5,6 и т.д). Файлов (книг), из которых копируются листы, может быть более 60.
Например, макрос открывает книгу, первый лист имеет название "Таблица", он вставляет его в активную и потом переименовывает его на "1" и и т.д.
Заранее благодарю.

Макрос:
Sub CombineWorkbooks()
Dim FilesToOpen
Dim x As Integer
On Error GoTo ErrHandler
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
MultiSelect:=True, Title:="Files to Merge")
If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "Отменено пользователем!"
GoTo ExitHandler
End If
x = 1
While x <= UBound(FilesToOpen)
Workbooks.Open Filename:=FilesToOpen(x)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWork book.Sheets.Count)
x = x + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub
Djo_Oker вне форума Ответить с цитированием
Старый 05.11.2013, 21:13   #12
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub CombineWorkbooks()
  Dim FilesToOpen
  Dim x As Integer, nn As Long
  On Error GoTo ErrHandler
  Application.ScreenUpdating = False
  FilesToOpen = Application.GetOpenFilename _
  (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _
  MultiSelect:=True, Title:="Files to Merge")
  If TypeName(FilesToOpen) = "Boolean" Then
    MsgBox "Отменено пользователем!"
    GoTo ExitHandler
  End If
  x = 1
  While x <= UBound(FilesToOpen)
    nn = Val(ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name) + 1
    Workbooks.Open Filename:=FilesToOpen(x)
    Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Format(nn, "00")
    x = x + 1
  Wend
ExitHandler:
  Application.ScreenUpdating = True
  Exit Sub
ErrHandler:
  MsgBox Err.Description
  Resume ExitHandler
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 06.11.2013, 10:40   #13
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
Вопрос Не сработало....

Попробовал применить ваш макрос. К сожалению, он не переименовывает скопированные листы из других книг, вставляет их с исходным названием. Возможно, я что-то не так сделал или не обратил на что-то внимание (скопировал код, как он есть)?
Djo_Oker вне форума Ответить с цитированием
Старый 06.11.2013, 11:10   #14
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

или удалите все листы с названиями 01, 02, 03... из исходной книги, или последним листом в книге должен быть лист с максимальным номером, новый скопированный получит след. порядковый номер.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.11.2013, 13:58   #15
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
Сообщение Пример.

К сожалению, долгое время не мог ответить.
Вы меня не совсем поняли.
Чтобы было проще я подготовил пример того, что я имею в рабочем процессе (см. вложение).

Заранее благодарю.
Вложения
Тип файла: zip Desktop.zip (27.2 Кб, 6 просмотров)
Djo_Oker вне форума Ответить с цитированием
Старый 11.11.2013, 16:07   #16
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см.вложение.
макрос из исходных книг будет пытаться скопировать лист "Классификатор", если такого нет, то просто первый лист из книги.
Вложения
Тип файла: rar Книга куда нужно собрать листы.rar (23.9 Кб, 5 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 11.11.2013, 18:07   #17
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
Хорошо Большое спасибо!

IgorGO, огромное спасибо Вам и этому форуму!!
Все работает точно так, как требовалось!
Если возникнут сложности буду обращаться именно к вам.
Ожидайте еще одну благодарность на - 41001804815208.
Прошу сообщить, когда придет перевод.
Djo_Oker вне форума Ответить с цитированием
Старый 11.11.2013, 19:28   #18
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

и Вам спасибо!
перевод получен.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 12.11.2013, 12:20   #19
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
По умолчанию

Хорошо.
К сожалению, снова столкнулся с некоторыми проблемами.
Макрос делает лишние действия:
1) Очищает все ячейки на листе "Реестр" (на листе Реестр имеется определенная форма, куда должна быть вставлена информация. Его не нужно очищать, только копировать столбцы с листов);
2) Макросы все же необходимо использовать отдельно, они не должны быть взаимосвязаны (разделить на две кнопки).

Еще в рабочем файле макрос снова начал копировать листы с исходным названием (не переименовывал). Что может вызвать ошибку макроса при переименовывании листа?
Пытался сам что-то поправить, но сразу столкнулся с множеством ошибок

Надеюсь на вашу помощь. Заранее спасибо.
Djo_Oker вне форума Ответить с цитированием
Старый 12.11.2013, 12:59   #20
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см. вложение
Вложения
Тип файла: rar Книга куда нужно собрать листы.rar (24.3 Кб, 6 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите доделать innaa639 Паскаль, Turbo Pascal, PascalABC.NET 1 21.05.2009 09:52
Помогите доделать Bay Паскаль, Turbo Pascal, PascalABC.NET 1 05.01.2009 15:01
Помогите доделать Povar Паскаль, Turbo Pascal, PascalABC.NET 1 16.05.2008 14:43