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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2012, 14:53   #1
Ogeris
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 87
По умолчанию Усовершенствование кода

Добрый день!

Необходимо перенести данные из 18 книг в одну (диапазон данных в столбцах A:AU). Ниже я привожу код, с помощью которого я это делаю (книга, в которую переносятся данные, называется "План-график", из которых переносятся, называются по номерам от 01 до 18го.):


Цитата:
Windows("01.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("кб59").Select
Range("A1").Select
ActiveSheet.Paste

Windows("02.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("кп54").Select
Range("A1").Select
ActiveSheet.Paste

Windows("03.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("л60").Select
Range("A1").Select
ActiveSheet.Paste

Windows("04.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("кар21").Select
Range("A1").Select
ActiveSheet.Paste

Windows("05.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("л65").Select
Range("A1").Select
ActiveSheet.Paste

Windows("06.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("р13").Select
Range("A1").Select
ActiveSheet.Paste

Windows("07.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("л60_2").Select
Range("A1").Select
ActiveSheet.Paste

Windows("08.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("пр52").Select
Range("A1").Select
ActiveSheet.Paste

Windows("09.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("у9").Select
Range("A1").Select
ActiveSheet.Paste

Windows("10.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("гф6").Select
Range("A1").Select
ActiveSheet.Paste

Windows("11.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("кб85").Select
Range("A1").Select
ActiveSheet.Paste

Windows("12.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("кр41").Select
Range("A1").Select
ActiveSheet.Paste

Windows("13.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("о14").Select
Range("A1").Select
ActiveSheet.Paste

Windows("14.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("гз12").Select
Range("A1").Select
ActiveSheet.Paste

Windows("15.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("лыс").Select
Range("A1").Select
ActiveSheet.Paste

Windows("16.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("чк").Select
Range("A1").Select
ActiveSheet.Paste

Windows("17.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("Ш112").Select
Range("A1").Select
ActiveSheet.Paste

Windows("18.xls").Activate
Sheets(1).Activate
Columns("A:AU").Select
Selection.Copy
Windows("План-График.xls").Activate
Sheets("мира").Select
Range("A1").Select
ActiveSheet.Paste
Вопрос первый: можно ли сделать проверку, если не открыта книга "03", то пропускать действие и переходить к следующей?

Вопрос второй: Возможно, у Вас будут идеи, как усовершенствовать данный процесс, или организовать его совсем по-другому
Ogeris вне форума Ответить с цитированием
Старый 24.02.2012, 15:29   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Попробуйте так
Код:
Sub Go_Junior 
Dim Sh As Worksheet, WB0 As Workbook, Sh0 As Worksheet
Dim X As Variant, LastRow As Long
Set WB0 = Workbooks("План-График.xls")
For Each W In Application.Windows
Set Sh = Workbooks(W.Caption).Worksheets(1)
LastRow = Sh.Range("A1").End(xlDown).Row
X = Sh.Range("A1:AU" & LastRow)
Select Case W.Caption
Case "01.xls"
Set Sh0 = WB0.Worksheets("кб59")
Sh0.Range("A1").Resize(UBound(X, 1), UBound(X, 2)) = X
Case "02.xls"
Set Sh0 = WB0.Worksheets("кп54")
Sh0.Range("A1").Resize(UBound(X, 1), UBound(X, 2)) = X
'Case "Остальные файлы" 'Аналогично для остальных файлов

End Select

Next

End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 24.02.2012, 17:19   #3
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

И что, все 18 книг в это время должны быть открыты?
Или именно на этом основан принцип отбора?
Если необходимо выбрать из всех книг, то, как по мне, проще создать список-массив имён листов, а потом просто в цикле открывать и переносить данные на нужный лист.
Типа
Код:
Dim ЛИСТЫ()
ЛИСТЫ= Array("кб59","кп54","л60".....)
For J  = 1 to 18
 Workbooks.Open Filename:="C:\....\" & J & ".xls", Origin:=xlWindows
'''''''''''''''''''''''''
Sheets(ЛИСТЫ(J - 1)).Select
'''''''
next J
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru

Последний раз редактировалось alex77755; 24.02.2012 в 17:33.
alex77755 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Усовершенствование программы. Yura_KoT Помощь студентам 1 08.11.2011 17:40
Усовершенствование программы вычисления интеграла 3мя способами одновременно с 4мя графиками Arzamaks Помощь студентам 0 10.07.2010 14:51
Усовершенствование автофильтра в Excel 2007 RGZZ Microsoft Office Excel 1 15.03.2010 08:49
усовершенствование кода toader Общие вопросы C/C++ 2 18.06.2009 10:12
Выдернуть куски кода из html-кода trafbite Помощь студентам 7 18.08.2007 13:51