Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
3 / 2 / 1
Регистрация: 28.01.2019
Сообщений: 15
1

Запись данных из массива в файл *.csv

12.03.2019, 12:30. Показов 6226. Ответов 6

Author24 — интернет-сервис помощи студентам
В процессе доработки макроса, вытягивающего из страницы excel номера телефонов столкнулся с проблемой.
Все работает как задумывалось, в конце обработки макрос пишет в файл,
НО(!) в конце файла *.csv (разделители: точка с запятой), ставится перенос строки.
Программа, в которую загружается список телефонов из-за того переноса не может импортировать, выдавая ошибку.
Может кто подсказать как избавиться от этого?

P.S. в ячейке (3,1) содержится строка, в конце которой прописана дата отчета.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub Search()
Dim i As Integer
Dim r()
Dim Filename as String
Dim sh As Excel.Worksheet
Set sh = ActiveWorkbook.Worksheets(1)
 
Filename = "\\192.168.2.1\vba\за " & Right(sh.Cells(3, 1).text, 10) & ".csv"
 
Open Filename For Output As #1
    For i = 1 To UBound(r)
        If r(i, 1) <> "" Then
            Print #1, r(i, 1) & ";" & r(i, 2)
            Else
            Exit For
        End If
    Next
Close #1
 
MsgBox ("файл сохранен: " & Filename)
End Sub
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.03.2019, 12:30
Ответы с готовыми решениями:

Запись в CSV-файл из массива. Не является форматом csv!
В общем искал работу... Дали тестовое написать парсер для сайта с выводом информации в csv-файл....

Запись данных в .CSV файл
Здравствуйте, столкнулся с глупой проблемой, но не смог нагуглить решение. Вводные: есть два...

Запись данных в csv файл по приходу в COM порт
Уже поднимал подобный вопрос, перерыл много информации, но так и не нашел ответа. Необходимо...

Создание и запись данных в CSV файл - перевод с C#
Привет) Помогите плиз перевести проект из С# в С++. Я на С# то написал все это с гуглом, а...

6
6982 / 2883 / 552
Регистрация: 19.10.2012
Сообщений: 8,773
12.03.2019, 12:55 2
Вместо Print пишите Write, ну и перенос строки придётся самому ставить когда он нужен.
0
15153 / 6426 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
12.03.2019, 13:36 3
Лучший ответ Сообщение было отмечено Ухин Николай как решение

Решение

Hugo121, Ухин Николай, Write ставит перенос строки, если в конце списка запятая не стоит. Так же как и Print, если в конце точка с запятой не стоит. У Write еще заморочка есть - к строкам кавычки добавляет.
Можно так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Dim f As Boolean
Open Filename For Output As #1
    For i = 1 To UBound(r)
        If r(i, 1) <> "" Then
            If f Then Print #1, 'не первая строка
            Print #1, r(i, 1) & ";" & r(i, 2);
            f = True
            Else
            Exit For
        End If
    Next
Close #1
1
3 / 2 / 1
Регистрация: 28.01.2019
Сообщений: 15
12.03.2019, 15:01  [ТС] 4
Спасибо!
Всё работает как требовалось.

Вот только не совсем понял по какому принципу это работает.
Со второй строки массива понятно что делает - запись данных из массива и присвоение переменной F значения "истина",
а вот что в первой что происходит?
0
6982 / 2883 / 552
Регистрация: 19.10.2012
Сообщений: 8,773
12.03.2019, 15:27 5
Я обычно для записи в файл использую Microsoft File System Object, там как-то всё понятнее
0
15153 / 6426 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
12.03.2019, 15:32 6
Ухин Николай, Print #1, - это печать пустой строки, т.е. вывод перевода строки. Запись данных из массива печатается без перевода строки (; в конце), и если при следующем проходе цикла опять что-то печатается, то сначала выводится перевод строки (для предыдущей строки). А вся возня с булевой переменной для того, чтобы перед первой строкой не выводилась пустая строка. Если программа, в которую импортируется файл, не собьется при наличии пустой первой строки в файле, можете просто переделать строку в своей программе так
Visual Basic
1
Print #1, vbNewLine & r(i, 1) & ";" & r(i, 2);
1
3 / 2 / 1
Регистрация: 28.01.2019
Сообщений: 15
12.03.2019, 15:36  [ТС] 7
Спасибо, теперь всё понятно. Относительно.
Буду пробовать ваять дальше...
0
12.03.2019, 15:36
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2019, 15:36
Помогаю со студенческими работами здесь

Экспорт данных из массива в CSV файл
Собственно сабж. Есть массив типа double и int32 их нужно перенести в CSV Не умею работать с CSV...

запись в csv файл
Добрый день,пытаюсь записать в csv файл таблицу mysql ,однако в файл попадает также весь html код...

Запись в csv файл
Считываю Лист объектов, делаю проверку по ключевому слову и нужно записать найденное в новый файл....

Запись в csv файл
Как сделать так чтобы результаты выполнения программы записывались в csv файл?


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
Rust или Go? А может C++?
hw_wired 28.01.2025
С каждой новой технологией или методологией появляются новые языки программирования, призванные решать конкретные задачи либо улучшать аспекты производительности и безопасности. Среди множества. . .
Fortran и WinAPI: как создать приложение с графическим интерфейсом
hw_wired 28.01.2025
Fortran — это один из старейших высокоуровневых языков программирования, широко используемый в науке и инженерии уже несколько десятилетий. Его название происходит от "Formula Translation" (перевод. . .
Списки в Haskell
hw_wired 28.01.2025
Haskell является функциональным языком программирования, который отличается лаконичностью синтаксиса и мощными абстракциями. Важным концептом в Haskell являются списки — упорядоченные коллекции. . .
Функции высшего порядка в Haskell
hw_wired 28.01.2025
Haskell – это современный функциональный язык программирования, который получил широкое распространение благодаря своей выразительности и мощным абстракциям. Одной из ключевых особенностей Haskell. . .
Как в цикле обойти все поля объекта в JavaScript
bytestream 28.01.2025
Объекты в JavaScript представляют собой фундаментальные структуры данных, которые позволяют хранить и организовывать связанную информацию в виде пар ключ-значение. Каждый объект можно представить как. . .
Как выбрать строки в DataFrame по значению столбца в Pandas
bytestream 28.01.2025
В области анализа данных библиотека Pandas стала незаменимым инструментом для работы с табличными данными в Python. Эта мощная библиотека предоставляет множество функций для эффективной обработки и. . .
Как сделать перенос строки в Bash
bytestream 28.01.2025
При работе с командной оболочкой Bash разработчики часто сталкиваются с необходимостью форматирования текстового вывода, где ключевую роль играет правильное управление переносами строк. Умение. . .
Поиск подстроки в строке с помощью Bash
bytestream 28.01.2025
Поиск подстроки в строке является одной из важных задач в программировании и обработке текстов. Применение такого поиска можно найти в самых разных областях, от анализа данных до разработки. . .
[golang] 169. Majority Element
alhaos 28.01.2025
Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать. / / . . .
Когда лучше использовать LinkedList вместо ArrayList в Java
bytestream 28.01.2025
При разработке Java-приложений выбор правильной структуры данных играет ключевую роль в обеспечении эффективности и производительности программы. ArrayList и LinkedList являются двумя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru