Добрый день! Формируется файл в CSV и формируется их очень большое количество. Можно сделать, что бы в сформированных файлах производились следующие изменения: из каждого файла нужно оставить столбцы A и J. Добавить третий столбец с названием "Кол-во". Проставить напротив каждой строки цифру "1" В первую непустую ячейку столбца A подставить слово ИТОГО, а под единицами посчитать количество этих самых единиц. И переконвертировать из CSV в обычный xlcx. так что бы название файла осталось прежним. И так сделать для всех выбранных файлов. Приложены примеры первоначального файла и то, что должно получиться в конце. Спасибо!
Добрый день! Формируется файл в CSV и формируется их очень большое количество. Можно сделать, что бы в сформированных файлах производились следующие изменения: из каждого файла нужно оставить столбцы A и J. Добавить третий столбец с названием "Кол-во". Проставить напротив каждой строки цифру "1" В первую непустую ячейку столбца A подставить слово ИТОГО, а под единицами посчитать количество этих самых единиц. И переконвертировать из CSV в обычный xlcx. так что бы название файла осталось прежним. И так сделать для всех выбранных файлов. Приложены примеры первоначального файла и то, что должно получиться в конце. Спасибо!AVI
Sub csv_aaa() With Application .ScreenUpdating = False .DisplayAlerts = False .Calculation = xlManual End With Dim iPath As String Dim iFileName As String Dim AvArr() As Variant Dim i As Long iPath = ActiveWorkbook.Path iFileName$ = Dir(iPath$ & "\*.csv") Do While iFileName$ <> "" Workbooks.Open Filename:=iFileName$ Columns("A:A").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 1), TrailingMinusNumbers:=True s = Cells(Rows.Count, 1).End(xlUp).Row ReDim AvArr(1 To s, 1 To 2) For n = 1 To s AvArr(n, 1) = Range("A" & n).Value AvArr(n, 2) = Range("J" & n).Value Next Workbooks.Add ActiveWorkbook.SaveAs Filename:=Left(iFileName, Len(iFileName) - 3) & "xlsx" Range("A1:B" & s) = AvArr() Range("A" & s + 1) = "Итого" Range("B" & s + 1) = s - 1 With ActiveWorkbook .Save .Close End With Windows(iFileName$).Close iFileName$ = Dir Loop
With Application .ScreenUpdating = True .DisplayAlerts = True .Calculation = xlAutomatic End With MsgBox ("Готово") End Sub
[/vba]
Не ставит единицы, так как подсчет ведется внутри, но если нужно - нетрудно добавить. Файл-пример приложен, должен лежать в той же папке, где и все искомые csv файлы, обрабатывает все csv файлы в папке, не удаляет их, создает xlsx файл с тем же названием, что и исходный csv.
[vba]
Код
Sub csv_aaa() With Application .ScreenUpdating = False .DisplayAlerts = False .Calculation = xlManual End With Dim iPath As String Dim iFileName As String Dim AvArr() As Variant Dim i As Long iPath = ActiveWorkbook.Path iFileName$ = Dir(iPath$ & "\*.csv") Do While iFileName$ <> "" Workbooks.Open Filename:=iFileName$ Columns("A:A").Select Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 1), TrailingMinusNumbers:=True s = Cells(Rows.Count, 1).End(xlUp).Row ReDim AvArr(1 To s, 1 To 2) For n = 1 To s AvArr(n, 1) = Range("A" & n).Value AvArr(n, 2) = Range("J" & n).Value Next Workbooks.Add ActiveWorkbook.SaveAs Filename:=Left(iFileName, Len(iFileName) - 3) & "xlsx" Range("A1:B" & s) = AvArr() Range("A" & s + 1) = "Итого" Range("B" & s + 1) = s - 1 With ActiveWorkbook .Save .Close End With Windows(iFileName$).Close iFileName$ = Dir Loop
With Application .ScreenUpdating = True .DisplayAlerts = True .Calculation = xlAutomatic End With MsgBox ("Готово") End Sub
[/vba]
Не ставит единицы, так как подсчет ведется внутри, но если нужно - нетрудно добавить. Файл-пример приложен, должен лежать в той же папке, где и все искомые csv файлы, обрабатывает все csv файлы в папке, не удаляет их, создает xlsx файл с тем же названием, что и исходный csv.Szekerfehesvar
AVI, не тот вариант кинул, попробуйте то, что во вложении сейчас. А то я Вам в чате написал корректный код, а вот файл с примером - еще не исправленный и в нем сначала проводилось переименование файла (что кстати тоже не очень корректно было), а затем проводилось закрытие уже несуществующего файла, о чем и известила эта табличка.
AVI, не тот вариант кинул, попробуйте то, что во вложении сейчас. А то я Вам в чате написал корректный код, а вот файл с примером - еще не исправленный и в нем сначала проводилось переименование файла (что кстати тоже не очень корректно было), а затем проводилось закрытие уже несуществующего файла, о чем и известила эта табличка.Szekerfehesvar
AVI, нажмите пож на кнопку Debug и пришлите скрин...у меня в папке все отрабатывает без ошибок, что то уже теряюсь в догадках, где там потери.
AVI, нажмите пож на кнопку Debug и пришлите скрин...у меня в папке все отрабатывает без ошибок, что то уже теряюсь в догадках, где там потери.Szekerfehesvar
AVI, если Вы заменили файл на тот, который в последнем сообщении был, то я теряюсь в догадках...у меня все отрабатывает прекрасно, может быть кто то еще сможет подсказать, что не так с кодом
AVI, если Вы заменили файл на тот, который в последнем сообщении был, то я теряюсь в догадках...у меня все отрабатывает прекрасно, может быть кто то еще сможет подсказать, что не так с кодом Szekerfehesvar
Pelena, макрос сработал, но: В ячейку С1 нужно добавить слово "кол-во" (без качек) и итоговое количество нужно написать прописать напротив слова "итого" в столбце B. А возможно проставить единицу в каждой строке между "кол-во" и итоговым количеством (на примере приложенного файлы (выделено красным)
Pelena, макрос сработал, но: В ячейку С1 нужно добавить слово "кол-во" (без качек) и итоговое количество нужно написать прописать напротив слова "итого" в столбце B. А возможно проставить единицу в каждой строке между "кол-во" и итоговым количеством (на примере приложенного файлы (выделено красным)AVI
Pelena, я понял, что вы только ошибку исправить помогли, просто автор макроса немного не доделал и я попросил помочь Вас. Единицы это требование для дальнейшей обработки. У меня формируется около 100 csv-шников и каждый месяц все описанное выше я делаю вручную с каждым файлом. Очень хочется их пакетно обрабатывать. Обработанные файлы уходят в распечатку тут и появляется требование по проставлению единичек.
Спасибо Вам большое! За вашу отзывчивость!
Pelena, я понял, что вы только ошибку исправить помогли, просто автор макроса немного не доделал и я попросил помочь Вас. Единицы это требование для дальнейшей обработки. У меня формируется около 100 csv-шников и каждый месяц все описанное выше я делаю вручную с каждым файлом. Очень хочется их пакетно обрабатывать. Обработанные файлы уходят в распечатку тут и появляется требование по проставлению единичек.
Szekerfehesvar, Вам благодарность особая! Если бы не вы, то, возможно, проблему бы я и не решил. Сам в макросах не разбираюсь, даже не представляю с какого начала начинать, поэтому и приходится просить уважаемых специалистов. Спасибо!
Szekerfehesvar, Вам благодарность особая! Если бы не вы, то, возможно, проблему бы я и не решил. Сам в макросах не разбираюсь, даже не представляю с какого начала начинать, поэтому и приходится просить уважаемых специалистов. Спасибо!AVI