Страницы: 1
RSS
Из нескольких Книг в Единую(определенные листы)
 
Из нескольких EXCEL Документов(файлов) надо копировать определенные листы полностью в общий Документ, а некоторые (листы) на определённую позицию общего Документа. Как поступить???  
НАДО:  
1. из файлов 1й склад.xlsm и 2й склад.xlsm в файл ALL.xlsm скопировать на листы “1й склад”  и “2й склад” листы “1й склад”  и “2й склад” соответственно ( со всей структурой листа исходника).  
(см. Прилоджение)  
2. из файлов 1й склад.xlsm и 2й склад.xlsm в файл ALL.xlsm скопировать на листы “Отгруженный товар ” и “Оприходованный товар ” соответствующие таблицы (из  1.xlsm и 2.xlsm). Причем, количество строк в таблице “Отгруженный товар ” (“Оприходованный товар ”) в исходных файлах (1.xlsm и 2.xlsm) может меняться (т.е. много записей или мало)  
(см. Прилоджение)  
3. Требуется реализовать окно выбора фалов, т.к. имена файлов ежеквартально меняются.    
Маска имени файла: “2й склад_(ДАТА).xlsm”  (“1й склад_(ДАТА).xlsm”).  
(см. Прилоджение)  
Решая подобную задачу, нашел макрос (http://www.planetaexcel.ru/tip.php?aid=111), но не совсем подходит. Он (макрос) после выбора нужных файлов для выбора просто переносит листы (порождая новые),  а надо чтобы копировал. Проблему №2 он вообще не решает.  
Ниже привожу указанный выше макрос. Изменил лишь маску файлов на *.xlm.  
Sub CombineWorkbooks()      
   Dim FilesToOpen      
   Dim x As Integer      
   On Error GoTo ErrHandler      
   Application.ScreenUpdating = False      
   FilesToOpen = Application.GetOpenFilename _      
                 (FileFilter:="Microsoft Excel Files (*.xlm), *.xlm", _      
                  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(ThisWorkbook.Sheets.Count)      
       x = x + 1      
   Wend      
ExitHandler:      
   Application.ScreenUpdating = True      
   Exit Sub      
ErrHandler:      
   MsgBox Err.Description      
   Resume ExitHandler      
End Sub
 
Sheets().COPY After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
 
{quote}{login=Марчук}{date=14.12.2009 09:01}{thema=}{post}Sheets().COPY After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count){/post}{/quote}  
А как же ж быть со вторым-с пунктом-с??? ;(((
 
Sub Макрос1()  
Dim iLastRow As Long  
iLastRow = Cells(Rows.Count, "A").End(xlUp).Row  
MsgBox "Последняя строка вашей таблицы находится в строке: " & iLastRow, , ""  
End Sub
Страницы: 1
Читают тему
Наверх