По пробую объяснить на простом примере. Бухгалтера приносят мне эксель файлы в которых в табличной части указано примерно так Файл 1-й 1. Помидоры код 1 10кг 2. Яблоки код 2 20кг 3. Мандарины код 3 15 кг Файл 2-й 1. Помидоры код 1 40кг 2. Яблоки код 2 10кг 3. Яблоки код 4 30кг 4. Мандарины код 3 15 кг Файл 3-й 1. Яблоки код 4 25кг 2. Мандарины код 3 15 кг 3. Мандарины код 5 5 кг
Я должен сделать свод этих файлов 1. Помидоры код 1 50кг 2. Яблоки код 2 30кг 3. Яблоки код 4 55кг 4. Мандарины код 3 45 кг 5. Мандарины код 5 5 кг
первое что нужно как я понял это чтобы файл СВОД.xls собрал данные из файлов 1.xls 2.xls 3.xls ... и создал странички с аналогичными названиями Второе когда свод соберет данные из файлов, он суммировал с учетом кода. т.е. яблоки код 2 и яблоки код 4 слаживал отдельно, и если в таблице нет соответствующей строки с кодом, то добавлял ее исходя из источника данных (файла) Если эту задачу нужно делать в VBA, то подскажите как? [moder]Лучше попробуйте приложить файл
По пробую объяснить на простом примере. Бухгалтера приносят мне эксель файлы в которых в табличной части указано примерно так Файл 1-й 1. Помидоры код 1 10кг 2. Яблоки код 2 20кг 3. Мандарины код 3 15 кг Файл 2-й 1. Помидоры код 1 40кг 2. Яблоки код 2 10кг 3. Яблоки код 4 30кг 4. Мандарины код 3 15 кг Файл 3-й 1. Яблоки код 4 25кг 2. Мандарины код 3 15 кг 3. Мандарины код 5 5 кг
Я должен сделать свод этих файлов 1. Помидоры код 1 50кг 2. Яблоки код 2 30кг 3. Яблоки код 4 55кг 4. Мандарины код 3 45 кг 5. Мандарины код 5 5 кг
первое что нужно как я понял это чтобы файл СВОД.xls собрал данные из файлов 1.xls 2.xls 3.xls ... и создал странички с аналогичными названиями Второе когда свод соберет данные из файлов, он суммировал с учетом кода. т.е. яблоки код 2 и яблоки код 4 слаживал отдельно, и если в таблице нет соответствующей строки с кодом, то добавлял ее исходя из источника данных (файла) Если эту задачу нужно делать в VBA, то подскажите как? [moder]Лучше попробуйте приложить файлWaleryN
мне подкинули вот такой макрос по сбору данных из файлов в книгу не могу понять как сделать чтобы он собирал файлы не с числовым а с буквенным именем ну и давал листам такие же имены как у файлов ПС в файлах по одному листу
[vba]
Код
Sub Собрать из файлов() Dim t As String
For i = 1 To 7
t = i If GetWorksheetByName(t) = "" Then Sheets.Add.Name = i Else Sheets(t).Select Cells.Delete Shift:=xlUp shCopy t End If Next
End Sub
Function shCopy(sh As String) ' открыть нужный файл и копирвать и закрыть его On Error Resume Next ChDir ThisWorkbook.Path Workbooks.Open Filename:=ThisWorkbook.Path & "\" & sh & ".xls" If Err Then GoTo metka1 Cells.Select Selection.Copy Windows(ThisWorkbook.Name).Activate Sheets(sh).Select ActiveSheet.Paste Windows(sh & ".xls").Close False Range("A1").Select metka1: Err.Clear End Function
Function GetWorksheetByName(ByRef shName As String) As String 'проверка наличия листа Dim sht As Worksheet For Each sht In ThisWorkbook.Worksheets If shName = sht.Name Then GetWorksheetByName = sht.Name Exit For Else GetWorksheetByName = "" End If Next sht End Function
[/vba]
мне подкинули вот такой макрос по сбору данных из файлов в книгу не могу понять как сделать чтобы он собирал файлы не с числовым а с буквенным именем ну и давал листам такие же имены как у файлов ПС в файлах по одному листу
[vba]
Код
Sub Собрать из файлов() Dim t As String
For i = 1 To 7
t = i If GetWorksheetByName(t) = "" Then Sheets.Add.Name = i Else Sheets(t).Select Cells.Delete Shift:=xlUp shCopy t End If Next
End Sub
Function shCopy(sh As String) ' открыть нужный файл и копирвать и закрыть его On Error Resume Next ChDir ThisWorkbook.Path Workbooks.Open Filename:=ThisWorkbook.Path & "\" & sh & ".xls" If Err Then GoTo metka1 Cells.Select Selection.Copy Windows(ThisWorkbook.Name).Activate Sheets(sh).Select ActiveSheet.Paste Windows(sh & ".xls").Close False Range("A1").Select metka1: Err.Clear End Function
Function GetWorksheetByName(ByRef shName As String) As String 'проверка наличия листа Dim sht As Worksheet For Each sht In ThisWorkbook.Worksheets If shName = sht.Name Then GetWorksheetByName = sht.Name Exit For Else GetWorksheetByName = "" End If Next sht End Function