Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
512-117
0 / 0 / 0
Регистрация: 11.07.2019
Сообщений: 4
1

Последовательный импорт одной строки из .csv в .xlsx

11.07.2019, 09:57. Просмотров 2480. Ответов 6
Метки нет (Все метки)

Здравствуйте, уважаемые форумчане.
Прошу помочь сделать макрос, который открывал бы файл с названием W0000.csv, копировал 535-ую строку и вставлял в обычную книгу 1200.xlsx, затем открывал файл W0001.csv и делал то же самое, но вставлял в следующую ячейку и так пока не закончатся файлы W****.csv в папке, а их 1296 штук.
Я пытался сделать это с разделением на столбцы, тогда нужна только одна ячейка В535.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
For i = 1 To 1296 Step 1
Workbooks.Open Filename:="W000i.csv", ReadOnly:=False
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    Range("B535").Select
    Selection.Copy
    ActiveWorkbook.Close SaveChanges:=False
    Workbooks.Open Filename:="1200.xlsx", ReadOnly:=False
    ActiveSheet.Paste Destination:=Worksheets("Sheet1").Range("B1")
    ActiveCell.Offset(i, 0).Select
    Next i
End Sub
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2019, 09:57
Ответы с готовыми решениями:

Импорт CSV в XLS с переносом строки
Всем доброго времени суток! Прошу помощи или хотя бы подсказки в каком направлении копать. Есть...

Изменить формат файлов в каталоге (из CSV в XLSX)
Добрый день, помогите пожалуйста с решением! в каталоге с файлом макроса лежат несколько файлов...

Импорт данных из txt в xlsx
Здравствуйте, впервые на форуме, помогите пожалуйста решить задачу. Только начал изучать...

Импорт и анализ данных из текстового лога .txt в табличный отчет .xlsx
дано :): папка /LOG с ежеминутно обновляемым логом с именем ddmmyy.log, в формате: dd:mm:yy...

Импорт файлов и .xls и .xlsx из одной директории в Access
Здравствуйте, профессионалы. Я применяю обычный метод импорта файлов по списку из одной...

6
512-117
0 / 0 / 0
Регистрация: 11.07.2019
Сообщений: 4
11.07.2019, 09:58  [ТС] 2
Вложение отклеилось.
0
Вложения
Тип файла: zip csv файлы.zip (9.5 Кб, 1 просмотров)
ArtNord
77 / 60 / 20
Регистрация: 18.11.2015
Сообщений: 377
11.07.2019, 10:12 3
Первое что сразу бросилось в глаза:
Visual Basic
1
Workbooks.Open Filename:="W000i.csv"
Измените на :
Visual Basic
1
Workbooks.Open Filename:="W000" & i & ".csv"
Добавлено через 3 минуты
+ в Filename нужно прописывать весь путь к файлу + имя "С:\Папка\Папка\W000" & i & ".csv"

Добавлено через 15 секунд
+ в Filename нужно прописывать весь путь к файлу + имя "С:\Папка\Папка\W000" & i & ".csv"

Добавлено через 31 секунду
+ в filename нужно прописывать полный путь к файлу
:="С:\Папка\Папка\W000" & i & ".csv"

Добавлено через 6 минут
Ещё, копировать и вставлять нужно до закрытия книги откуда копируете
1
512-117
0 / 0 / 0
Регистрация: 11.07.2019
Сообщений: 4
12.07.2019, 09:58  [ТС] 4
Учел предыдущие поправки, немного разобрался и даже начало получаться.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Workbooks.Open Filename:="C:\Users\21840\Desktop\28.06.19\1200.xlsx", ReadOnly:=False
For i = 1 To 1296 Step 1
Workbooks.Open Filename:="C:\Users\21840\Desktop\28.06.19\W000" & i & ".csv", ReadOnly:=False
    Range("a535:b535").Select
    Selection.Copy
    Workbooks("1200.xlsx").Activate
    Range("B1").Select
    ActiveCell.Offset(i, 0).Select
    ActiveSheet.Paste
    Workbooks("W000" & i & ".csv").Activate
    ActiveWorkbook.Close SaveChanges:=False
    Next i
End Sub
Это работает, но файлы у меня называются "W0000", "W0001" и т.д., затем идут файлы "W0010", "W0100", "W1000", а программа ищет файлы "W00010", "W000100" и "W0001000", как это исправить?
Как по мере прохождения цикла заменять нули в названии соответствующими цифрами?
0
ArtNord
77 / 60 / 20
Регистрация: 18.11.2015
Сообщений: 377
12.07.2019, 10:12 5
Лучший ответ Сообщение было отмечено 512-117 как решение

Решение

Попробуйте так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Workbooks.Open Filename:="C:\Users\21840\Desktop\28.06.19\1200.xlsx", ReadOnly:=False
For i = 1 To 1296
iName = String(4-len(i), "0") & i
Workbooks.Open Filename:="C:\Users\21840\Desktop\28.06.19\W" & iName  & ".csv", ReadOnly:=False
    Range("a535:b535").Select
    Selection.Copy
    Workbooks("1200.xlsx").Activate
    Range("B1").Select
    ActiveCell.Offset(i, 0).Select
    ActiveSheet.Paste
    Workbooks("W" & iName   & ".csv").Activate
    ActiveWorkbook.Close SaveChanges:=False
    Next i
End Sub
1
512-117
0 / 0 / 0
Регистрация: 11.07.2019
Сообщений: 4
12.07.2019, 11:11  [ТС] 6
Спасибо большое, все работает.
0
ArtNord
77 / 60 / 20
Регистрация: 18.11.2015
Сообщений: 377
12.07.2019, 14:01 7
512-117, разобрались, отлично! Теперь можно улучшать код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
ScreenUpdate = False
Workbooks.Open Filename:="C:\Users\21840\Desktop\28.06.19\1200.xlsx", ReadOnly:=False
For i = 1 To 1296
iName = String(4-len(i), "0") & i
Workbooks.Open Filename:="C:\Users\21840\Desktop\28.06.19\W" & iName  & ".csv", ReadOnly:=False
    Range("a535:b535").Copy  Workbooks("1200.xlsx").Sheets("Название листа").Cells(i, 2)
    Workbooks("W" & iName   & ".csv").Close SaveChanges:=False
    Next i
ScreenUpdate = True
End Sub
Это должно ускорить работу макроса и убрать мерцание экрана.
Ну и немного сократит сам код
0
12.07.2019, 14:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2019, 14:01

Powershell импорт последней строки из csv файла
Добрый день. Имею файл csv, который динамически обновляется (каждую минуту добавляется последняя...

Из xlsx в csv
В офисной программе Excel (или ее аналогах) всегда можно сохранить таблицу в формате csv. ...

Xlsx/csv
подскажите максимально простую библиотеку для записи в xlsx/csv P.S. понимаю что csv можно и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru