Реально ли реализовать сбор нескольких файлов в один, да так, чтобы информация с нескольких файлов раскидывалась по определенным листам конечного файла?
Пример можно посмотреть во вложении.
Есть файлы 1,2,3,4,5,6. Нужно написать макрос, который будет собирать информацию с этих файлов в конечный файл под номером 7 и раскидывать ее по разным листам. Номер листа в седьмом файле соответствует названию файла из которого берется информация. К примеру информация из файла под номером один должна встать на лист под номером один седьмого файла. Названия листов тех шести файлов всегда соответствуют названиям самих файлов. Форматы файлов должны быть строго такими, какие во вложении. После выполнения макроса все файлы должны закрыться, выполнение самого макроса должно быть без выведения какой-либо информации на экран. Макрос нужно записать в отдельный файл (планируется запускать его через vbs-ник)
Сам пробовал писать с помощью макрорекодера, — не получилось. Программа не понимает, что информацию из нового файла нужно записывать в новый лист, и фигачит все на один и тот же.
Если у кого-то есть еще идеи как такое можно реализовать, не обязательно через макрос, — предлагайте, буду благодарен.
На этом, кажется, все. Если будут вопросы — задавайте. Пока что еще раз попробую справиться сам, но идей уже никаких не осталось.
Все файлы во вложении. Летс дискасс!
Всем привет.
Реально ли реализовать сбор нескольких файлов в один, да так, чтобы информация с нескольких файлов раскидывалась по определенным листам конечного файла?
Пример можно посмотреть во вложении.
Есть файлы 1,2,3,4,5,6. Нужно написать макрос, который будет собирать информацию с этих файлов в конечный файл под номером 7 и раскидывать ее по разным листам. Номер листа в седьмом файле соответствует названию файла из которого берется информация. К примеру информация из файла под номером один должна встать на лист под номером один седьмого файла. Названия листов тех шести файлов всегда соответствуют названиям самих файлов. Форматы файлов должны быть строго такими, какие во вложении. После выполнения макроса все файлы должны закрыться, выполнение самого макроса должно быть без выведения какой-либо информации на экран. Макрос нужно записать в отдельный файл (планируется запускать его через vbs-ник)
Сам пробовал писать с помощью макрорекодера, — не получилось. Программа не понимает, что информацию из нового файла нужно записывать в новый лист, и фигачит все на один и тот же.
Если у кого-то есть еще идеи как такое можно реализовать, не обязательно через макрос, — предлагайте, буду благодарен.
На этом, кажется, все. Если будут вопросы — задавайте. Пока что еще раз попробую справиться сам, но идей уже никаких не осталось.
Public Sub www() Dim i& Application.ScreenUpdating = 0 For i = 1 To 6 With Workbooks.Open(ThisWorkbook.Path & "\" & i & ".csv", Origin:=xlWindows, local:=-1) .Sheets(1).Range("A1").CurrentRegion.Copy ThisWorkbook.Sheets(CStr(i)).[a1] .Close 0 End With Next Application.ScreenUpdating = -1 End Sub
[/vba]
[vba]
Код
Public Sub www() Dim i& Application.ScreenUpdating = 0 For i = 1 To 6 With Workbooks.Open(ThisWorkbook.Path & "\" & i & ".csv", Origin:=xlWindows, local:=-1) .Sheets(1).Range("A1").CurrentRegion.Copy ThisWorkbook.Sheets(CStr(i)).[a1] .Close 0 End With Next Application.ScreenUpdating = -1 End Sub
Pelena, KuklP, последний тупой вопрос: если названия листов и файлов будут другие. Например файлы не 1-6, а arep, brep, crep, drep, erep, frep? Листы тоже так будут называться.
Pelena, KuklP, последний тупой вопрос: если названия листов и файлов будут другие. Например файлы не 1-6, а arep, brep, crep, drep, erep, frep? Листы тоже так будут называться.Volodya
Public Sub www() Dim i&, f$, ws As Worksheet Application.ScreenUpdating = 0 f = Dir(ThisWorkbook.Path & "\" & "*.csv") Do While f <> "" With Workbooks.Open(ThisWorkbook.Path & "\" & f, Origin:=xlWindows, local:=-1) Set ws = ThisWorkbook.Worksheets.Add ws.Name = Left(f, InStr(1, f, ".") - 1) .Sheets(1).Range("A1").CurrentRegion.Copy ws.[a1] .Close 0 End With f = Dir() Loop Application.ScreenUpdating = -1 End Sub
[/vba]Соберет все файлы csv из папки и присвоит новым листам имена файлов.
[vba]
Код
Public Sub www() Dim i&, f$, ws As Worksheet Application.ScreenUpdating = 0 f = Dir(ThisWorkbook.Path & "\" & "*.csv") Do While f <> "" With Workbooks.Open(ThisWorkbook.Path & "\" & f, Origin:=xlWindows, local:=-1) Set ws = ThisWorkbook.Worksheets.Add ws.Name = Left(f, InStr(1, f, ".") - 1) .Sheets(1).Range("A1").CurrentRegion.Copy ws.[a1] .Close 0 End With f = Dir() Loop Application.ScreenUpdating = -1 End Sub
[/vba]Соберет все файлы csv из папки и присвоит новым листам имена файлов.KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728