Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сделать, чтоб при экспорте Excel в CSV не проставлялись лишние кавычки? / 2 сообщений из 2, страница 1 из 1
17.05.2013, 14:29
    #38262055
еще вопрос
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать, чтоб при экспорте Excel в CSV не проставлялись лишние кавычки?
Экспортирую или кнопками или через vba .
Если в поле есть кавычки, например (ООО "Цириус"), то в csv-шнике получим ""ООО ""Цириус""" .
Если кавычек нет, то не добавляет...

Как сделать, чтоб в поле не добавлялись кавычки?
...
Рейтинг: 0 / 0
17.05.2013, 23:00
    #38262835
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать, чтоб при экспорте Excel в CSV не проставлялись лишние кавычки?
Поскольку ни один из форматов при сохранении файла в Excel - нормально не подходит , то дарю:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
Sub ExportSheet2TXT()

    nStartRow = 1
    nStartCol = 1
    lIsHeader = True
    cTextQualifier = ""
    cDelimiter = ";"
    cDecimalSeparator = "."
    cFormatDateTime = "YYYY-MM-DD hh:mm:ss"
    cTypeQualifier = "#"
        
    Set wb = ActiveWorkbook
    Set sh = ActiveSheet
    Set newwb = Workbooks.Add
    Set newsh = newwb.Sheets(1)
    
    nLastRow = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row
    nLastCol = sh.Cells(1, sh.Columns.Count).End(xlToLeft).Column
    Dim aCells As Variant, aRow As Variant
    For i = nStartRow To nLastRow
        cOut = ""
        For j = nStartCol To nLastCol
            cValue = sh.Cells(i, j)
            nValueType = VarType(cValue)
            If lIsHeader And (i = 1) Then nValueType = -1
            Select Case nValueType
            Case -1
            Case vbString
                cValue = cTextQualifier & cValue & cTextQualifier
            Case vbInteger, vbLong, vbByte
                cValue = CStr(cValue)
            Case vbSingle, vbDouble, vbCurrency, vbDecimal
                cValue = Replace(CStr(cValue), Application.International(xlDecimalSeparator), cDecimalSeparator)
            Case vbBoolean
                cValue = cTypeQualifier & CStr(cValue) & cTypeQualifier
            Case vbDate
                cValue = cTypeQualifier & Format(cValue, cFormatDateTime) & cTypeQualifier
            Case Else
                cValue = ""
            End Select
            cOut = cOut & cDelimiter & CStr(cValue)
        Next
        newsh.Cells(i, 1) = Mid(cOut, 2)
    Next
    
    Set newsh = Nothing
    Application.DisplayAlerts = False
    newwb.SaveAs Filename:=(wb.FullName & "-" & sh.Name & ".dat"), FileFormat:=xlTextPrinter, _
        CreateBackup:=False, local:=True
    Application.DisplayAlerts = True
    newwb.Close savechanges:=False
    Set newwb = Nothing
    wb.Activate
    Set sh = Nothing
    Set wb = Nothing
    
End Sub

Процедура экспортирует данные текущего листа в нужном формате. Настройки экспорта вынесены в начало. Option Explicit не использовалось. Разберётесь - делайте себе хоть функции с параметрами, хоть классы, хоть модифицируйте по-своему...
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сделать, чтоб при экспорте Excel в CSV не проставлялись лишние кавычки? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]