Есть несколько файлов с расширением .csv. Информацию из этих файлов нужно закинуть в .xls-файл на один лист. Использую код, приведенный ниже. Но проблема в том, что когда программа собирает информацию с разных листов, "съедается" часть информации с предыдущего листа - следующим. Подскажите как исправить?[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 Sheets("stock").Select Range(("A2:AA2"), Range("A2:AA2").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Range("A1").Select Set cell = [a1].End(xlDown) ActiveSheet.Paste Sheets("stocka").Select Range(("A2:AA2"), Range("A2:AA2").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Set cell = [a1].End(xlDown) ActiveSheet.Paste Sheets("stockkolp").Select Range(("A2:AA2"), Range("A2:AA2").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Set cell = [a1].End(xlDown) ActiveSheet.Paste Sheets("stockm").Select Range(("A2:AA2"), Range("A2:AA2").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Set cell = [a1].End(xlDown) ActiveSheet.Paste Sheets("stockp").Select Range(("A1:AA1"), Range("A1:AA1").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Range("A1").Select Selection.Insert Shift:=xlDown ActiveSheet.Paste Application.DisplayAlerts = False Sheets("stock").Delete Sheets("stockm").Delete Sheets("stockp").Delete Sheets("stockA").Delete Sheets("stockkolp").Delete Dim StrA As String Dim StrB As String Dim StrC As String With ActiveWorkbook StrA = .Path & "\" StrB = Left(.Name, InStr(1, .Name, ".xls") - 1) StrC = "distributor278_" & Replace(Format(Date, "MM_YY"), ".", "") & ".xls" .SaveAs Filename:=StrA & StrC ActiveWorkbook.Save Application.Quit ActiveWorkbook.Close Application.DisplayAlerts = True Application.ScreenUpdating = -1 End With End Sub
[/vba]
Есть несколько файлов с расширением .csv. Информацию из этих файлов нужно закинуть в .xls-файл на один лист. Использую код, приведенный ниже. Но проблема в том, что когда программа собирает информацию с разных листов, "съедается" часть информации с предыдущего листа - следующим. Подскажите как исправить?[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 Sheets("stock").Select Range(("A2:AA2"), Range("A2:AA2").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Range("A1").Select Set cell = [a1].End(xlDown) ActiveSheet.Paste Sheets("stocka").Select Range(("A2:AA2"), Range("A2:AA2").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Set cell = [a1].End(xlDown) ActiveSheet.Paste Sheets("stockkolp").Select Range(("A2:AA2"), Range("A2:AA2").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Set cell = [a1].End(xlDown) ActiveSheet.Paste Sheets("stockm").Select Range(("A2:AA2"), Range("A2:AA2").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Set cell = [a1].End(xlDown) ActiveSheet.Paste Sheets("stockp").Select Range(("A1:AA1"), Range("A1:AA1").End(xlDown)).Select Selection.Copy Sheets("Лист1").Select Range("A1").Select Selection.Insert Shift:=xlDown ActiveSheet.Paste Application.DisplayAlerts = False Sheets("stock").Delete Sheets("stockm").Delete Sheets("stockp").Delete Sheets("stockA").Delete Sheets("stockkolp").Delete Dim StrA As String Dim StrB As String Dim StrC As String With ActiveWorkbook StrA = .Path & "\" StrB = Left(.Name, InStr(1, .Name, ".xls") - 1) StrC = "distributor278_" & Replace(Format(Date, "MM_YY"), ".", "") & ".xls" .SaveAs Filename:=StrA & StrC ActiveWorkbook.Save Application.Quit ActiveWorkbook.Close Application.DisplayAlerts = True Application.ScreenUpdating = -1 End With End Sub