Страницы: 1
RSS
Копирование определенного листа из нескольких листов другой закрытой книги.
 
Ребятки, добрый день.  
Вынужден обратиться к вам за помощью.  
Из различных тем на форуме я составил по кусочкам код, который копирует в рабочую книгу ОПРЕДЕЛЕННЫЙ лист ("Журнал учета") из другой закрытой книги.  
Все работает отлично за ИСКЛЮЧЕНИЕМ следующего - копирование происходит НЕ корректно в том случае, если в книге, из которой мы хотим скопировать лист ("Журнал учета") ИМЕЕТСЯ больше одного листа. То есть если в книге из которой хотим скопировать лист имеется лист ("Журнал учета") и КАКОЙ_НИБУДЬ еще лист или несколько листов, то копирование НЕ корректно. А если лист один, то все хорошо.  
 
Прошу вас помочь, исправить код так, чтобы он копировал нужный нам лист и не обращал внимания на другие листы, которые находятся в книге, из которой мы хотим скопировать.
 
Вот мой код  
 
Option Explicit  
 
Private Sub CommandButton1_Click()  
Dim FD As FileDialog  
Dim iFileName As String  
Dim NewWB As Workbook  
Dim ActSht As Worksheet  
 
Application.DisplayAlerts = False  
     
  On Error Resume Next  
   Sheets("Данные из журнала").Delete ' удаление листа с устаревшими данными  
     
   Set FD = Application.FileDialog(msoFileDialogFilePicker)  
   With FD  
       .AllowMultiSelect = False  
       With .Filters  
           .Clear  
           .Add "Файлы Excel 97-2003", "*.xls*"  
       End With  
         
       If .Show = False Then Exit Sub Else iFileName = .SelectedItems(1)  
         
   End With  
   Set ActSht = ActiveSheet  
   Set NewWB = Workbooks.Open(Filename:=iFileName, UpdateLinks:=0, ReadOnly:=1)  
   Me.TextBox1.Text = iFileName  
       
   Cells.Copy  
             
   Windows("Общий файл_23.xlsm").Activate  
   Sheets.Add After:=Sheets(Sheets.Count)  
     
   ActiveSheet.Paste  
     
   ActiveSheet.Name = "Данные из журнала"  
     
   NewWB.Close False 'закрыть открытый файл  
     
  Application.DisplayAlerts = True  
     
  Unload Me  
     
  ' выравнивание значений в ячейках по высоте  
  Cells.VerticalAlignment = xlCenter  
  Cells.Validation.Delete  
     
  Range("A2").Select  
     
End Sub
 
**  
Set ActSht = ActiveSheet  
Set NewWB = Workbooks.Open(Filename:=iFileName, UpdateLinks:=0, ReadOnly:=1)  
Me.TextBox1.Text = iFileName  
 
NewWB.Sheets("Журнал учета").Cells.Copy  
 
Windows("Общий файл_23.xlsm").Activate  
Sheets.Add After:=Sheets(Sheets.Count)  
**
 
sva, большое спасибо, все отлично !!  
 
Ребята, прошу прощения, я выставил пример с установленной защитой, на всякий случай код "2588"
Страницы: 1
Читают тему
Наверх