Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Пакетная обработка и переформирование. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Пакетная обработка и переформирование. (Макросы/Sub)
Пакетная обработка и переформирование.
AVI Дата: Четверг, 22.09.2016, 09:44 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
Формируется файл в CSV и формируется их очень большое количество. Можно сделать, что бы в сформированных файлах производились следующие изменения: из каждого файла нужно оставить столбцы A и J. Добавить третий столбец с названием "Кол-во". Проставить напротив каждой строки цифру "1" В первую непустую ячейку столбца A подставить слово ИТОГО, а под единицами посчитать количество этих самых единиц. И переконвертировать из CSV в обычный xlcx. так что бы название файла осталось прежним. И так сделать для всех выбранных файлов.
Приложены примеры первоначального файла и то, что должно получиться в конце.
Спасибо!
К сообщению приложен файл: 70205_Ust-Uda_1.csv(77Kb) · 70205_Ust-Uda_1.xlsx(12Kb)


Сообщение отредактировал AVI - Четверг, 22.09.2016, 09:48
 
Ответить
СообщениеДобрый день!
Формируется файл в CSV и формируется их очень большое количество. Можно сделать, что бы в сформированных файлах производились следующие изменения: из каждого файла нужно оставить столбцы A и J. Добавить третий столбец с названием "Кол-во". Проставить напротив каждой строки цифру "1" В первую непустую ячейку столбца A подставить слово ИТОГО, а под единицами посчитать количество этих самых единиц. И переконвертировать из CSV в обычный xlcx. так что бы название файла осталось прежним. И так сделать для всех выбранных файлов.
Приложены примеры первоначального файла и то, что должно получиться в конце.
Спасибо!

Автор - AVI
Дата добавления - 22.09.2016 в 09:44
Szekerfehesvar Дата: Вторник, 27.09.2016, 14:35 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 6 ±
Замечаний: 20% ±

Excel 2013
[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.
К сообщению приложен файл: Start.xlsm(17Kb)
 
Ответить
Сообщение[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
Дата добавления - 27.09.2016 в 14:35
AVI Дата: Среда, 28.09.2016, 08:59 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Не работает(
К сообщению приложен файл: 6638107.png(87Kb)
 
Ответить
СообщениеНе работает(

Автор - AVI
Дата добавления - 28.09.2016 в 08:59
Szekerfehesvar Дата: Среда, 28.09.2016, 11:56 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 6 ±
Замечаний: 20% ±

Excel 2013
AVI, не тот вариант кинул, попробуйте то, что во вложении сейчас.
А то я Вам в чате написал корректный код, а вот файл с примером - еще не исправленный и в нем сначала проводилось переименование файла (что кстати тоже не очень корректно было), а затем проводилось закрытие уже несуществующего файла, о чем и известила эта табличка.
К сообщению приложен файл: 6606821.xlsm(21Kb)


Сообщение отредактировал Szekerfehesvar - Среда, 28.09.2016, 11:59
 
Ответить
СообщениеAVI, не тот вариант кинул, попробуйте то, что во вложении сейчас.
А то я Вам в чате написал корректный код, а вот файл с примером - еще не исправленный и в нем сначала проводилось переименование файла (что кстати тоже не очень корректно было), а затем проводилось закрытие уже несуществующего файла, о чем и известила эта табличка.

Автор - Szekerfehesvar
Дата добавления - 28.09.2016 в 11:56
AVI Дата: Среда, 28.09.2016, 17:28 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Szekerfehesvar, К сожалению выдает ту же ошибку(
 
Ответить
СообщениеSzekerfehesvar, К сожалению выдает ту же ошибку(

Автор - AVI
Дата добавления - 28.09.2016 в 17:28
Szekerfehesvar Дата: Четверг, 29.09.2016, 11:43 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 6 ±
Замечаний: 20% ±

Excel 2013
AVI, нажмите пож на кнопку Debug и пришлите скрин...у меня в папке все отрабатывает без ошибок, что то уже теряюсь в догадках, где там потери.
 
Ответить
СообщениеAVI, нажмите пож на кнопку Debug и пришлите скрин...у меня в папке все отрабатывает без ошибок, что то уже теряюсь в догадках, где там потери.

Автор - Szekerfehesvar
Дата добавления - 29.09.2016 в 11:43
AVI Дата: Воскресенье, 02.10.2016, 15:23 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Szekerfehesvar,
К сообщению приложен файл: 9889103.jpg(39Kb)


Сообщение отредактировал AVI - Воскресенье, 02.10.2016, 15:25
 
Ответить
СообщениеSzekerfehesvar,

Автор - AVI
Дата добавления - 02.10.2016 в 15:23
Szekerfehesvar Дата: Понедельник, 03.10.2016, 10:42 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 6 ±
Замечаний: 20% ±

Excel 2013
AVI, если Вы заменили файл на тот, который в последнем сообщении был, то я теряюсь в догадках...у меня все отрабатывает прекрасно, может быть кто то еще сможет подсказать, что не так с кодом :(
 
Ответить
СообщениеAVI, если Вы заменили файл на тот, который в последнем сообщении был, то я теряюсь в догадках...у меня все отрабатывает прекрасно, может быть кто то еще сможет подсказать, что не так с кодом :(

Автор - Szekerfehesvar
Дата добавления - 03.10.2016 в 10:42
AVI Дата: Вторник, 04.10.2016, 02:16 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Szekerfehesvar, действительно странно. Я взял файл из Вашего последнего примера. Жалко((
 
Ответить
СообщениеSzekerfehesvar, действительно странно. Я взял файл из Вашего последнего примера. Жалко((

Автор - AVI
Дата добавления - 04.10.2016 в 02:16
Pelena Дата: Вторник, 04.10.2016, 11:20 | Сообщение № 10
Группа: Модераторы
Ранг: Экселист
Сообщений: 10385
Репутация: 2353 ±
Замечаний: 0% ±

Excel 2010 & Mac Excel 2011
AVI, попробуйте строчку, выделенную желтым переписать так
[vba]
Код
Workbooks.Open Filename:=iPath & "\" & iFileName$
[/vba]
и при сохранении тоже
[vba]
Код
ActiveWorkbook.SaveAs Filename:=iPath & "\" & Left(iFileName, Len(iFileName) - 3) & "xlsx"
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеAVI, попробуйте строчку, выделенную желтым переписать так
[vba]
Код
Workbooks.Open Filename:=iPath & "\" & iFileName$
[/vba]
и при сохранении тоже
[vba]
Код
ActiveWorkbook.SaveAs Filename:=iPath & "\" & Left(iFileName, Len(iFileName) - 3) & "xlsx"
[/vba]

Автор - Pelena
Дата добавления - 04.10.2016 в 11:20
AVI Дата: Вторник, 04.10.2016, 17:30 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Pelena, макрос сработал, но:
В ячейку С1 нужно добавить слово "кол-во" (без качек) и итоговое количество нужно написать прописать напротив слова "итого" в столбце B.
А возможно проставить единицу в каждой строке между "кол-во" и итоговым количеством (на примере приложенного файлы (выделено красным)
К сообщению приложен файл: 3195930.xlsx(11Kb)


Сообщение отредактировал AVI - Вторник, 04.10.2016, 17:31
 
Ответить
СообщениеPelena, макрос сработал, но:
В ячейку С1 нужно добавить слово "кол-во" (без качек) и итоговое количество нужно написать прописать напротив слова "итого" в столбце B.
А возможно проставить единицу в каждой строке между "кол-во" и итоговым количеством (на примере приложенного файлы (выделено красным)

Автор - AVI
Дата добавления - 04.10.2016 в 17:30
Pelena Дата: Вторник, 04.10.2016, 18:06 | Сообщение № 12
Группа: Модераторы
Ранг: Экселист
Сообщений: 10385
Репутация: 2353 ±
Замечаний: 0% ±

Excel 2010 & Mac Excel 2011
Собственно, я только насчёт ошибки отвечала...

А зачем единицы? Подсчёта количества значений недостаточно?
К сообщению приложен файл: 3796845.xlsm(21Kb)


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеСобственно, я только насчёт ошибки отвечала...

А зачем единицы? Подсчёта количества значений недостаточно?

Автор - Pelena
Дата добавления - 04.10.2016 в 18:06
AVI Дата: Среда, 05.10.2016, 04:53 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Pelena, я понял, что вы только ошибку исправить помогли, просто автор макроса немного не доделал и я попросил помочь Вас.
Единицы это требование для дальнейшей обработки. У меня формируется около 100 csv-шников и каждый месяц все описанное выше я делаю вручную с каждым файлом. Очень хочется их пакетно обрабатывать. Обработанные файлы уходят в распечатку тут и появляется требование по проставлению единичек.

Спасибо Вам большое! За вашу отзывчивость!


Сообщение отредактировал AVI - Среда, 05.10.2016, 05:41
 
Ответить
СообщениеPelena, я понял, что вы только ошибку исправить помогли, просто автор макроса немного не доделал и я попросил помочь Вас.
Единицы это требование для дальнейшей обработки. У меня формируется около 100 csv-шников и каждый месяц все описанное выше я делаю вручную с каждым файлом. Очень хочется их пакетно обрабатывать. Обработанные файлы уходят в распечатку тут и появляется требование по проставлению единичек.

Спасибо Вам большое! За вашу отзывчивость!

Автор - AVI
Дата добавления - 05.10.2016 в 04:53
Szekerfehesvar Дата: Среда, 05.10.2016, 14:51 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 6 ±
Замечаний: 20% ±

Excel 2013
Pelena, спасибо за найденную ошибку!
AVI, про единицы подумал, что это исключительно для подсчета выводилось, и поэтому из макроса убрал
 
Ответить
СообщениеPelena, спасибо за найденную ошибку!
AVI, про единицы подумал, что это исключительно для подсчета выводилось, и поэтому из макроса убрал

Автор - Szekerfehesvar
Дата добавления - 05.10.2016 в 14:51
AVI Дата: Среда, 05.10.2016, 18:11 | Сообщение № 15
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация: 6 ±
Замечаний: 0% ±

Excel 2013
Szekerfehesvar, Вам благодарность особая! Если бы не вы, то, возможно, проблему бы я и не решил. Сам в макросах не разбираюсь, даже не представляю с какого начала начинать, поэтому и приходится просить уважаемых специалистов. Спасибо!
 
Ответить
СообщениеSzekerfehesvar, Вам благодарность особая! Если бы не вы, то, возможно, проблему бы я и не решил. Сам в макросах не разбираюсь, даже не представляю с какого начала начинать, поэтому и приходится просить уважаемых специалистов. Спасибо!

Автор - AVI
Дата добавления - 05.10.2016 в 18:11
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Пакетная обработка и переформирование. (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!