Nikita95
Дата: Понедельник, 25.09.2017, 12:40 |
Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Здравствуйте, необходимо создавать архив, в котором будут содержаться определенные значения из множества книг, находящихся в одной папке. В каждой такой книге есть лист "Вывод данных", можно ли в отдельный файл записать значения только с этого листа, не из всей книги? Есть следующий макрос:
Sub Собираем_данные()
Dim iRng As Range
Dim iRngAddress As String , oAwb As String , oFile
Dim lLastRow As Long , lLastRowMyBook As Long
Dim iLastColumn As Integer
Dim Str () As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = "*.*"
.Title = "Выберите файлы"
If .Show = False Then Exit Sub
For Each oFile In .SelectedItems
Workbooks.OpenText fileName:=oFile
oAwb = Dir (oFile, vbDirectory)
Application.ScreenUpdating = False
Workbooks(oAwb).Activate
For Each Sheet In Sheets
Sheet.Activate
lLastRow = Cells(1 , 1 ).SpecialCells(xlLastCell).Row
iLastColumn = Cells(1 , 1 ).SpecialCells(xlLastCell).Column
lLastRowMyBook = ThisWorkbook.Worksheets(1 ).Cells(100 , 1 ).SpecialCells(xlLastCell).Row
iRngAddress = Range(Cells(lLastRowMyBook, 1 ), Cells(lLastRowMyBook + lLastRow, iLastColumn)).Address
Sheet.Range(Cells(1 , 1 ), Cells(lLastRow, iLastColumn)).Copy Destination:=ThisWorkbook.Worksheets(1 ).Range(iRngAddress)
Next Sheet
Workbooks(oAwb).Close False
Next oFile
End With
Application.ScreenUpdating = True
End Sub
Он записывает все листы, пытаюсь переделать его чтоб записывать только этот лист из каждой книги, но безуспешно. Реально переделать этот или нужно совершенно другой? Возможно ли вообще записывать только 1 лист из книги? Примеры книг ниже
Здравствуйте, необходимо создавать архив, в котором будут содержаться определенные значения из множества книг, находящихся в одной папке. В каждой такой книге есть лист "Вывод данных", можно ли в отдельный файл записать значения только с этого листа, не из всей книги? Есть следующий макрос:
Sub Собираем_данные()
Dim iRng As Range
Dim iRngAddress As String , oAwb As String , oFile
Dim lLastRow As Long , lLastRowMyBook As Long
Dim iLastColumn As Integer
Dim Str () As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = "*.*"
.Title = "Выберите файлы"
If .Show = False Then Exit Sub
For Each oFile In .SelectedItems
Workbooks.OpenText fileName:=oFile
oAwb = Dir (oFile, vbDirectory)
Application.ScreenUpdating = False
Workbooks(oAwb).Activate
For Each Sheet In Sheets
Sheet.Activate
lLastRow = Cells(1 , 1 ).SpecialCells(xlLastCell).Row
iLastColumn = Cells(1 , 1 ).SpecialCells(xlLastCell).Column
lLastRowMyBook = ThisWorkbook.Worksheets(1 ).Cells(100 , 1 ).SpecialCells(xlLastCell).Row
iRngAddress = Range(Cells(lLastRowMyBook, 1 ), Cells(lLastRowMyBook + lLastRow, iLastColumn)).Address
Sheet.Range(Cells(1 , 1 ), Cells(lLastRow, iLastColumn)).Copy Destination:=ThisWorkbook.Worksheets(1 ).Range(iRngAddress)
Next Sheet
Workbooks(oAwb).Close False
Next oFile
End With
Application.ScreenUpdating = True
End Sub
Он записывает все листы, пытаюсь переделать его чтоб записывать только этот лист из каждой книги, но безуспешно. Реально переделать этот или нужно совершенно другой? Возможно ли вообще записывать только 1 лист из книги? Примеры книг ниже Nikita95
Сообщение отредактировал Nikita95 - Понедельник, 25.09.2017, 12:41
Ответить
Сообщение Здравствуйте, необходимо создавать архив, в котором будут содержаться определенные значения из множества книг, находящихся в одной папке. В каждой такой книге есть лист "Вывод данных", можно ли в отдельный файл записать значения только с этого листа, не из всей книги? Есть следующий макрос: [vba]
Sub Собираем_данные()Dim iRng As RangeDim iRngAddress As String ; oAwb As String ; oFileDim lLastRow As Long ; lLastRowMyBook As LongDim iLastColumn As IntegerDim Str() As StringWith Application.FileDialog(msoFileDialogFilePicker ).AllowMultiSelect = Тrue.InitialFileName = "*.*".Title = "Выберите файлы"If .Show = False Then Exit SubFor Each oFile In .SelectedItemsWorkbooks.OpenText fileName :=oFileoAwb = Dir(oFile ; vbDirectory )Application.ScreenUpdating = FalseWorkbooks(oAwb ).ActivateFor Each Sheet In SheetsSheet.ActivatelLastRow = Cells(1; 1).SpecialCells(xlLastCell ).RowiLastColumn = Cells(1; 1).SpecialCells(xlLastCell ).ColumnlLastRowMyBook = ТhisWorkbook.Worksheets(1).Cells(100; 1).SpecialCells(xlLastCell ).RowiRngAddress = Range(Cells(lLastRowMyBook ; 1); Cells(lLastRowMyBook + lLastRow ; iLastColumn )).AddressSheet.Range(Cells(1; 1); Cells(lLastRow ; iLastColumn )).Copy Destination :=ТhisWorkbook.Worksheets(1).Range(iRngAddress )Next SheetWorkbooks(oAwb ).Close FalseNext oFileEnd WithApplication.ScreenUpdating = ТrueEnd Sub
[/vba] Он записывает все листы, пытаюсь переделать его чтоб записывать только этот лист из каждой книги, но безуспешно. Реально переделать этот или нужно совершенно другой? Возможно ли вообще записывать только 1 лист из книги? Примеры книг ниже Автор - Nikita95 Дата добавления - 25.09.2017 в 12:40
_Boroda_
Дата: Понедельник, 25.09.2017, 13:19 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16888
Репутация:
6611
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Прочитайте Правила форума Оформите код тегами (кнопка # в режиме правки поста)
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Прочитайте Правила форума Оформите код тегами (кнопка # в режиме правки поста) Автор - _Boroda_ Дата добавления - 25.09.2017 в 13:19
Nikita95
Дата: Вторник, 26.09.2017, 14:14 |
Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Sub Собираем_данные()
Dim iRng As Range
Dim iRngAddress As String , oAwb As String , oFile
Dim lLastRow As Long , lLastRowMyBook As Long
Dim iLastColumn As Integer
Dim Str () As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = "*.*"
.Title = "Выберите файлы"
If .Show = False Then Exit Sub
For Each oFile In .SelectedItems
Workbooks.OpenText fileName:=oFile
oAwb = Dir (oFile, vbDirectory)
Application.ScreenUpdating = False
Workbooks(oAwb).Activate
For Each Sheet In Sheets
Sheet.Activate
lLastRow = Cells(1 , 1 ).SpecialCells(xlLastCell).Row
iLastColumn = Cells(1 , 1 ).SpecialCells(xlLastCell).Column
lLastRowMyBook = ThisWorkbook.Worksheets(1 ).Cells(100 , 1 ).SpecialCells(xlLastCell).Row
iRngAddress = Range(Cells(lLastRowMyBook, 1 ), Cells(lLastRowMyBook + lLastRow, iLastColumn)).Address
Sheet.Range(Cells(1 , 1 ), Cells(lLastRow, iLastColumn)).Copy Destination:=ThisWorkbook.Worksheets(1 ).Range(iRngAddress)
Next Sheet
Workbooks(oAwb).Close False
Next oFile
End With
Application.ScreenUpdating = True
End Sub
Sub Собираем_данные()
Dim iRng As Range
Dim iRngAddress As String , oAwb As String , oFile
Dim lLastRow As Long , lLastRowMyBook As Long
Dim iLastColumn As Integer
Dim Str () As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = "*.*"
.Title = "Выберите файлы"
If .Show = False Then Exit Sub
For Each oFile In .SelectedItems
Workbooks.OpenText fileName:=oFile
oAwb = Dir (oFile, vbDirectory)
Application.ScreenUpdating = False
Workbooks(oAwb).Activate
For Each Sheet In Sheets
Sheet.Activate
lLastRow = Cells(1 , 1 ).SpecialCells(xlLastCell).Row
iLastColumn = Cells(1 , 1 ).SpecialCells(xlLastCell).Column
lLastRowMyBook = ThisWorkbook.Worksheets(1 ).Cells(100 , 1 ).SpecialCells(xlLastCell).Row
iRngAddress = Range(Cells(lLastRowMyBook, 1 ), Cells(lLastRowMyBook + lLastRow, iLastColumn)).Address
Sheet.Range(Cells(1 , 1 ), Cells(lLastRow, iLastColumn)).Copy Destination:=ThisWorkbook.Worksheets(1 ).Range(iRngAddress)
Next Sheet
Workbooks(oAwb).Close False
Next oFile
End With
Application.ScreenUpdating = True
End Sub
Nikita95
Ответить
Сообщение [vba]
Sub Собираем_данные()Dim iRng As RangeDim iRngAddress As String ; oAwb As String ; oFileDim lLastRow As Long ; lLastRowMyBook As LongDim iLastColumn As IntegerDim Str() As StringWith Application.FileDialog(msoFileDialogFilePicker ).AllowMultiSelect = Тrue.InitialFileName = "*.*".Title = "Выберите файлы"If .Show = False Then Exit SubFor Each oFile In .SelectedItemsWorkbooks.OpenText fileName :=oFileoAwb = Dir(oFile ; vbDirectory )Application.ScreenUpdating = FalseWorkbooks(oAwb ).ActivateFor Each Sheet In SheetsSheet.ActivatelLastRow = Cells(1; 1).SpecialCells(xlLastCell ).RowiLastColumn = Cells(1; 1).SpecialCells(xlLastCell ).ColumnlLastRowMyBook = ТhisWorkbook.Worksheets(1).Cells(100; 1).SpecialCells(xlLastCell ).RowiRngAddress = Range(Cells(lLastRowMyBook ; 1); Cells(lLastRowMyBook + lLastRow ; iLastColumn )).AddressSheet.Range(Cells(1; 1); Cells(lLastRow ; iLastColumn )).Copy Destination :=ТhisWorkbook.Worksheets(1).Range(iRngAddress )Next SheetWorkbooks(oAwb ).Close FalseNext oFileEnd WithApplication.ScreenUpdating = ТrueEnd Sub
[/vba] Автор - Nikita95 Дата добавления - 26.09.2017 в 14:14
_Boroda_
Дата: Вторник, 26.09.2017, 15:02 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16888
Репутация:
6611
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Нужно было старый пост поправить. Но, посколько через сутки Вы уже не можете его редактировать, то просто написали бы в посте, я бы попрвавил. А макрос я Вам еще вчера сделал
Sub Собираем_данные()
Dim iRng As Range
Dim iRngAddress As String , oAwb As String , oFile
Dim lLastRow As Long , lLastRowMyBook As Long
Dim iLastColumn As Integer
Dim Str () As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = "*.*"
.Title = "Выберите файлы"
If .Show = False Then Exit Sub
Application.ScreenUpdating = False
On Error Resume Next
For Each oFile In .SelectedItems
Workbooks.OpenText Filename:=oFile
oAwb = Dir (oFile, vbDirectory)
Err.Clear
Sheets("Вывод данных" ).Activate
If Err = 0 Then
lLastRow = Cells(1 , 1 ).SpecialCells(xlLastCell).Row
iLastColumn = Cells(1 , 1 ).SpecialCells(xlLastCell).Column
lLastRowMyBook = ThisWorkbook.Worksheets(1 ).Cells(100 , 1 ).SpecialCells(xlLastCell).Row + 1
iRngAddress = Range(Cells(lLastRowMyBook, 1 ), Cells(lLastRowMyBook + lLastRow, iLastColumn)).Address
Sheets("Вывод данных" ).Range(Cells(1 , 1 ), Cells(lLastRow, iLastColumn)).Copy Destination:=ThisWorkbook.Worksheets(1 ).Range(iRngAddress)
End If
Workbooks(oAwb).Close False
Next oFile
End With
Application.ScreenUpdating = True
End Sub
Нужно было старый пост поправить. Но, посколько через сутки Вы уже не можете его редактировать, то просто написали бы в посте, я бы попрвавил. А макрос я Вам еще вчера сделал
Sub Собираем_данные()
Dim iRng As Range
Dim iRngAddress As String , oAwb As String , oFile
Dim lLastRow As Long , lLastRowMyBook As Long
Dim iLastColumn As Integer
Dim Str () As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = True
.InitialFileName = "*.*"
.Title = "Выберите файлы"
If .Show = False Then Exit Sub
Application.ScreenUpdating = False
On Error Resume Next
For Each oFile In .SelectedItems
Workbooks.OpenText Filename:=oFile
oAwb = Dir (oFile, vbDirectory)
Err.Clear
Sheets("Вывод данных" ).Activate
If Err = 0 Then
lLastRow = Cells(1 , 1 ).SpecialCells(xlLastCell).Row
iLastColumn = Cells(1 , 1 ).SpecialCells(xlLastCell).Column
lLastRowMyBook = ThisWorkbook.Worksheets(1 ).Cells(100 , 1 ).SpecialCells(xlLastCell).Row + 1
iRngAddress = Range(Cells(lLastRowMyBook, 1 ), Cells(lLastRowMyBook + lLastRow, iLastColumn)).Address
Sheets("Вывод данных" ).Range(Cells(1 , 1 ), Cells(lLastRow, iLastColumn)).Copy Destination:=ThisWorkbook.Worksheets(1 ).Range(iRngAddress)
End If
Workbooks(oAwb).Close False
Next oFile
End With
Application.ScreenUpdating = True
End Sub
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Нужно было старый пост поправить. Но, посколько через сутки Вы уже не можете его редактировать, то просто написали бы в посте, я бы попрвавил. А макрос я Вам еще вчера сделал [vba]
Sub Собираем_данные() Dim iRng As Range Dim iRngAddress As String ; oAwb As String ; oFile Dim lLastRow As Long ; lLastRowMyBook As Long Dim iLastColumn As Integer Dim Str() As String With Application.FileDialog(msoFileDialogFilePicker ) .AllowMultiSelect = Тrue .InitialFileName = "*.*" .Title = "Выберите файлы" If .Show = False Then Exit Sub Application.ScreenUpdating = False On Error Resume Next For Each oFile In .SelectedItems Workbooks.OpenText Filename :=oFile oAwb = Dir(oFile ; vbDirectory ) Err.Clear Sheets("Вывод данных").Activate If Err = 0 Then lLastRow = Cells(1; 1).SpecialCells(xlLastCell ).Row iLastColumn = Cells(1; 1).SpecialCells(xlLastCell ).Column lLastRowMyBook = ТhisWorkbook.Worksheets(1).Cells(100; 1).SpecialCells(xlLastCell ).Row + 1 iRngAddress = Range(Cells(lLastRowMyBook ; 1); Cells(lLastRowMyBook + lLastRow ; iLastColumn )).Address Sheets("Вывод данных").Range(Cells(1; 1); Cells(lLastRow ; iLastColumn )).Copy Destination :=ТhisWorkbook.Worksheets(1).Range(iRngAddress ) End If Workbooks(oAwb ).Close False Next oFile End With Application.ScreenUpdating = ТrueEnd Sub
[/vba] Автор - _Boroda_ Дата добавления - 26.09.2017 в 15:02
Nikita95
Дата: Среда, 27.09.2017, 06:08 |
Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
_Boroda_, Спасибо Вам!
Ответить
Сообщение _Boroda_, Спасибо Вам! Автор - Nikita95 Дата добавления - 27.09.2017 в 06:08