Страницы: 1
RSS
csv разделители строк кавычки, Сохранение csv в кавычках
 
Добрый день!
Нужна ваша помощь, макросом нужно сохранить csv, но чтобы данные были в кавычках с разделителем ","
например

"описание","1","2","3"

Нашел тему https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=21432&am...
Там решили такой вопрос, но сохранение ручное. Подскажите как сделать автоматическое?

Вот код:
Код
Sub SaveAsCSVinQuotes()   
Dim r As Range, c As Range, s As String   
s = Application.GetSaveAsFilename(, "CSV Files (*.csv),*.csv,All Files (*.*),*.*", , "Сохранение в формате CSV в кавычках")   
If s = "False" Then Exit Sub   
Open s For Output As #1   
For Each r In ActiveSheet.UsedRange.Rows   
   s = ""   
   For Each c In r.Cells   
       s = s & "," & """" & c & """"   
   Next   
   Print #1, Mid$(s, 2)   
Next   
Close #1   
End Sub
Заранее спасибо!
 
Позвольте полюбопытствовать, что Вы имеете в виду под "ручным" сохранением?
Владимир
 
Цитата
Nabos написал:
как сделать автоматическое
- включите запись макроса, сохраните в нужном виде, выключите запись - получите автоматический макрос, только в нём вместо пути-имени подставьте свою переменную s. Только не вторую, а первую. А вторую нужно поменять. Ну или первую... Поняли? :)
Но данные тогда нужно не складывать в текстовый файл, а на чистый лист экселя (или в новый файл), а его уже сохранять тем записанным макросом.
Изменено: Hugo - 01.06.2018 19:50:53
 
Цитата
sokol92 написал: что Вы имеете в виду под "ручным" сохранением?
Имею ввиду предлагает ввести путь для сохранения и выбрать имя.

Цитата
Hugo написал: Но данные тогда нужно не складывать в текстовый файл, а на чистый лист экселя...
Извините, но к сожалению у меня выдало ошибку. Я немного "чайник" в vba. Буду признателен если у Вас получится дать правильный код сохранения :)
 
Вот, не менял ни буквы:
Код
Option Explicit

Sub Макрос1()
'
' Макрос1 Макрос
'

'
    ChDir "C:\Users\Igor\Downloads"
    ActiveWorkbook.SaveAs Filename:="C:\Users\Igor\Downloads\Пример (6).csv", _
        FileFormat:=xlCSVMSDOS, CreateBackup:=False
End Sub

Код
ChDir "C:\Users\Igor\Downloads"
можно выкинуть.
Изменено: Hugo - 01.06.2018 20:19:27
 
Модификация #1: создает файл csv в той же папке и с тем же именем, что и активная книга.
Код
Sub SaveAsCSVinQuotes2()
Dim r As Range, c As Range, s As String, i As Long
s = ActiveWorkbook.FullName
i = InStrRev(s, ".")
Open Left(s, i) & "csv" For Output As #1
For Each r In ActiveSheet.UsedRange.Rows
   s = ""
   For Each c In r.Cells
       s = s & "," & """" & c & """"
   Next
   Print #1, Mid$(s, 2)
Next
Close #1
End Sub
Владимир
 
Цитата
Hugo написал:
Вот, не менял ни буквы:
К сожалению использую этот макрос уже давно, но тут не вписывает кавычки =)

Цитата
sokol92 написал:
Модификация #1: создает файл csv в той же папке и с тем же именем, что и активная книга.
Спасибо огромное, а как можно сохранить в определенной папке с определенным именем?
 
Цитата
Nabos написал:
а как можно сохранить в определенной папке с определенным именем?
А в #5 это разве не показано?
 
Цитата
Nabos написал:
а как можно сохранить в определенной папке с определенным именем?
В #6 в строке 5 выражение между Open и For задает полный путь к выводимому файлу csv. Пробуйте!
Владимир
 
Цитата
Юрий М написал:
А в #5 это разве не показано?
данный пример к сожалению сохраняет как

Код
1,2,2,23,3,42323asd,ad,asd,3sdf,JGDKS,FJasd,asd,asd,asd,asd,asd

Мне же нужно чтобы соблюдались кавычки "1","2","2","23"...

 
Nabos, Вы ничего не путаете? Спросили: "как можно сохранить в определенной папке с определенным именем?" - в #5 показан вариант сохранения в папку  DownLoads с именем Пример (6).csv
 
Юрий М, Я извиняюсь, что возможно мог поставить пользователей форума в заблуждение, давайте переформулирую вопрос из первого поста.

Цитата
Nabos написал:
Нужна ваша помощь, макросом нужно сохранить csv, но чтобы данные были в кавычках с разделителем ","
Я имел ввиду, что я бы хотел понять, как сохранить файл csv, чтобы данные внутри файла были в кавычках. При этом путь сохранения нужно прописать уже готовый в макросе.

В примере #5 показано как сохранить в определенную папку, но сохраняется csv без кавычек. В моем примере #1 показано как сохранить csv с кавычками, но сохранение ручное. Я бы хотел уточнить, как обьединить эти 2 варианта.

Спасибо за понимание!
 
Просто добавьте строку 10 (11) из #5 в свой макрос. Путь и имя файла укажите свои.
 
Не Юра, не так. Я показал как можно сохранить файл Экселя, ну а с кавычками или без - это уж как хозяин заполнит.
А если с текстом - так ведь в https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=105329&TITLE_SEO=105329-csv-razdeliteli-strok-kavychki&MID=871949&tags=PowerBI&%3BPAGE_NAME=read&%3B=#message871949 sokol92 уже всё написал, нужно только своё путь/имя подставить вместо Left(s, i) & "csv" (ну и выкинуть всё что выше связано с этими уже ненужными переменными).
 
Игорь, так и я про Excel-файл )
 
Добрый день, столкнулся с такой же проблемой, нужно чтобы в csv файле с разделителем точка с запятой (;) данные были в кавычках, например "1, 2, 3";"1, 2, 3";"итд"
пробовал соединять строки с Chr(34), в результате получаю по 3 двойных кавычки с каждой стороны """1, 2, 3""";"""1, 2, 3""";
Также пробовал приведенный здесь скрипт, но данные с листа после него заменяются на две кавычки
Код
Sub save(bn As String) 'bn имя и путь моего csv файла
Dim r As Range, c As Range, s As String
Open bn For Output As #1
For Each r In ActiveSheet.UsedRange.Rows
   s = ""
   For Each c In r.Cells
       s = s & ";" & """" & c & """"
   Next
   Print #1, Mid$(s, 2)
Next
Close #1
End Sub
 
В #16 каждое поле строки окружается двойными кавычками (один раз). Если есть вероятность, что значение какой-либо ячейки содержит символ двойной кавычки, то в соответствии со стандартом csv строку 7 следует изменить так:
Код
s = s & ";" & """" & Replace(c, """", """""") & """"
Изменено: sokol92 - 01.09.2018 17:55:06
Владимир
Страницы: 1
Наверх