Проблема с CSV

Программирование на Visual Basic for Applications
Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Проблема с CSV

Сообщение Estilla » 19.10.2006 (Чт) 14:34

При ручном открытии файла всё нормально, данные разнесены по столбцам, но когда открываю кодом, то данные заносятся в один столбец разделенные двоеточием. Как сделать, чтобы данные не оставались на своих местах?
Код открытия:
Код: Выделить всё
Workbooks.Open Filename:="G:\EXCEL\work\test4.csv"

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2006 (Чт) 14:38

Opentext посмотри со всеми его параметрами, а то это не "код", это уход от кода...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 15:30

GSerg писал(а):Opentext посмотри со всеми его параметрами, а то это не "код", это уход от кода...


opentext также открывает :(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2006 (Чт) 15:32

С тем же единственным параметром? Ещё бы.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 15:41

GSerg писал(а):С тем же единственным параметром? Ещё бы.


Код: Выделить всё

Workbooks.OpenText Filename:="G:\EXCEL\work\test4.csv", _
Origin:=1251, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=False

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2006 (Чт) 15:47

И где же здесь те самые двоеточия, которые, как следует из первого поста, являются реальным разделителем?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 15:54

GSerg писал(а):И где же здесь те самые двоеточия, которые, как следует из первого поста, являются реальным разделителем?


я ошибся, не двоеточие , а точка с запятой.
Так мне нужно, что бы файл открывался таким образом, чтобы текст был разнесен по разным колонкам, а не в одной как дает мне программа.
(ручное открытие дает нужный результат. Проблема с кодом)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2006 (Чт) 15:56

Ну в коде стоит, к примеру, Tab:=True, Semicolon:=False, так чего же мы хотим?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 16:00

GSerg писал(а):Ну в коде стоит, к примеру, Tab:=True, Semicolon:=False, так чего же мы хотим?


а что нужно-то? Подскажите пожалуйста. Я уже всё перебрал.

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 16:02

GSerg писал(а):Ну в коде стоит, к примеру, Tab:=True, Semicolon:=False, так чего же мы хотим?


Я не могу добиться результат через запись макроса, поскольку запись выдает мне код с обычным Open без каких либо параметров.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.10.2006 (Чт) 16:09

Estilla писал(а):а что нужно-то?

Нужно открыть словарь английского языка и посмотреть значения слов tab и semicolon...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 16:12

вот исходный файл
Вложения
test8.zip
(127 байт) Скачиваний: 80

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 16:16

GSerg писал(а):
Estilla писал(а):а что нужно-то?

Нужно открыть словарь английского языка и посмотреть значения слов tab и semicolon...


при чем здесь словарь?
Вы знаете как помочь или нет? Если нет, то зачем флудить?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.10.2006 (Чт) 16:17

Словарь при том, что "tab" переводится как "символ табуляции", а "semicolon" переводится как "точка с запятой".
Lasciate ogni speranza, voi ch'entrate.

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 16:21

alibek писал(а):Словарь при том, что "tab" переводится как "символ табуляции", а "semicolon" переводится как "точка с запятой".


Но это не решает проблемы.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.10.2006 (Чт) 16:28

А это решает проблему?
РабочаяКнига.ОткрытьТекст ИмяФайла:="G:\EXCEL\work\test4.csv", КодоваяСтраница:=1251, НачальнаяСтрока:=1, ТипДанных:=СРазделителями, ОграничителиТекста:=ДвойныеКавычки, СливатьРазделители:=Да, Табуляторы:=Да, ТочкаСЗапятой:=Нет, Запятая:=Нет, Пробел:=Нет, Прочее:=Нет
Lasciate ogni speranza, voi ch'entrate.

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 16:41

alibek писал(а):А это решает проблему?
РабочаяКнига.ОткрытьТекст ИмяФайла:="G:\EXCEL\work\test4.csv", КодоваяСтраница:=1251, НачальнаяСтрока:=1, ТипДанных:=СРазделителями, ОграничителиТекста:=ДвойныеКавычки, СливатьРазделители:=Да, Табуляторы:=Да, ТочкаСЗапятой:=Нет, Запятая:=Нет, Пробел:=Нет, Прочее:=Нет


нет, поскольку вы написали тоже самое что и я. Я не знаю какие параметры нужно выставить чтобы работало как надо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.10.2006 (Чт) 16:44

Блин.
Прочее (Other) выставить в True. Задать OtherChar:="::".
Табулятор, точку с запятой, запятую, пробел выставить в False.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.10.2006 (Чт) 16:47

Estilla писал(а):я ошибся, не двоеточие , а точка с запятой.

Other:=False, Semicolon:=True
Lasciate ogni speranza, voi ch'entrate.

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 16:53

alibek писал(а):
Estilla писал(а):я ошибся, не двоеточие , а точка с запятой.

Other:=False, Semicolon:=True


не пашет.

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 16:56

alibek писал(а):
Estilla писал(а):я ошибся, не двоеточие , а точка с запятой.

Other:=False, Semicolon:=True


ну не работает это :((((
Посомтрите пожалуйста файл. Он простой.

код открытия этого файла из другой книги:
Код: Выделить всё

Workbooks.OpenText Filename:="G:\EXCEL\work\test8.csv", _
StartRow:=1, _
DataType:=xlDelimited, _
ConsecutiveDelimiter:=False, _
Tab:=False, _
Semicolon:=True, _
Comma:=False, _
Space:=False, _
Other:=False

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 19.10.2006 (Чт) 20:30

я так понял никто из вышеответивших не смог решить эту задачу. Может еще кто-нибудь помочь?

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 20.10.2006 (Пт) 0:22

Estilla, действительно твой файл не открывается как ты хочешь. Но если его переименовать, изменив расширение на *.txt, то все работает. Попробуй.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 20.10.2006 (Пт) 0:22

Насколько мне известно, csv означает Comma Separated Values т.е. Значения Разделенные Запятыми. В зависимости от конфигурации системы, Excel может сохранять и открывать csv с др. разделителем, в т.ч. с точкой запятой. Однако это не распространяется на VBA. Т.е. как ни старайся, если указываешь рассширение csv, VBA автоматически предполагает, что разделитель - запятая. Думаю, что следующее могло бы быть одним из возможных решений:

Код: Выделить всё
Sub Macro4()
    Filename = "G:\EXCEL\work\test4.csv"
    FileCopy Filename, Filename & ".txt"
    Workbooks.Open Filename:=Filename & ".txt", Format:=4
End Sub
Привет,
KL

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 20.10.2006 (Пт) 0:25

Вот. KL обосновал почему так просходит.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 20.10.2006 (Пт) 0:32

единственное решение, которое я нашел пока, это открытие не csv файла , а txt.

p.s. Хотелось бы узнать, кто-нибудь попробовал открыть кодом csv на тех условиях, что я описал вначале?

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 20.10.2006 (Пт) 0:34

VVitafresh писал(а):Estilla, действительно твой файл не открывается как ты хочешь. Но если его переименовать, изменив расширение на *.txt, то все работает. Попробуй.


:) пока я писАл , появились ответы, спасибо.

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 20.10.2006 (Пт) 0:38

KL писал(а):
Код: Выделить всё
Sub Macro4()
    Filename = "G:\EXCEL\work\test4.csv"
    FileCopy Filename, Filename & ".txt"
    Workbooks.Open Filename:=Filename & ".txt", Format:=4
End Sub


Ок. Спасибо, пригодится. В моем случае без разницы, какое расширение. Выходит лучше сразу в TXT загонять вместо CSV

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 20.10.2006 (Пт) 5:34

Еще вариант (без изменения файла):

Код: Выделить всё
Sub Macro1()
    With ActiveSheet.QueryTables.Add(Connection:= "TEXT;G:\EXCEL\work\test4.csv", Destination:=[A1])
        .TextFileParseType = xlDelimited
        .TextFileSemicolonDelimiter = True
        .Refresh BackgroundQuery:=False
        .Delete
    End With
End Sub
Привет,
KL

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Re: Проблема с CSV

Сообщение Nicky » 20.10.2006 (Пт) 7:35

А у меня работает
Estilla писал(а):Код открытия:
Код: Выделить всё
Workbooks.Open Filename:="G:\EXCEL\work\test4.csv"

И запись макроса дает то же самое

След.

Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 81

    TopList