Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/SQL импорт из txt файла - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » SQL импорт из txt файла
SQL импорт из txt файла
nerv Дата: Вторник, 16.04.2013, 01:50 | Сообщение № 1
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Всем привет!

Не работает такая конструкция:
[vba]
Код
Sub Example()

         Set objConnection = CreateObject("ADODB.Connection")
         Set objRecordset = CreateObject("ADODB.Recordset")
              
         strPathtoTextFile = "с:\1\"
              
         objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                   "Data Source=" & strPathtoTextFile & ";" & _
                   "Extended Properties=""text;HDR=no;Format=TabDelimited"""
              
         objRecordset.Open "SELECT * FROM test.txt", objConnection
                  
         Range("A1").CopyFromRecordset objRecordset
              
              
         objRecordset.Close
         objConnection.Close

End Sub
[/vba]

текстовый файл вида
[vba]
Код
1    2    3
4    5    6
[/vba]
читается как
[vba]
Код
"1    2    3"
"4    5    6"
[/vba]
т.е. данные не разбиваются по ячейкам.

Подозреваю, что проблема в файле Schema.ini, которого у меня нет (Win7 x64). Он у кого-нибудь имеется? Если да, то где?

Спасибо.


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Вторник, 16.04.2013, 01:53
 
Ответить
СообщениеВсем привет!

Не работает такая конструкция:
[vba]
Код
Sub Example()

         Set objConnection = CreateObject("ADODB.Connection")
         Set objRecordset = CreateObject("ADODB.Recordset")
              
         strPathtoTextFile = "с:\1\"
              
         objConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                   "Data Source=" & strPathtoTextFile & ";" & _
                   "Extended Properties=""text;HDR=no;Format=TabDelimited"""
              
         objRecordset.Open "SELECT * FROM test.txt", objConnection
                  
         Range("A1").CopyFromRecordset objRecordset
              
              
         objRecordset.Close
         objConnection.Close

End Sub
[/vba]

текстовый файл вида
[vba]
Код
1    2    3
4    5    6
[/vba]
читается как
[vba]
Код
"1    2    3"
"4    5    6"
[/vba]
т.е. данные не разбиваются по ячейкам.

Подозреваю, что проблема в файле Schema.ini, которого у меня нет (Win7 x64). Он у кого-нибудь имеется? Если да, то где?

Спасибо.

Автор - nerv
Дата добавления - 16.04.2013 в 01:50
_Boroda_ Дата: Вторник, 16.04.2013, 13:19 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Попробуй так (правда, я не уверен)
Создай его сам и положи В ТУ ЖЕ ПАПКУ!
примерно так
[vba]
Код
[test.txt]
ColNameHeader=False
CharacterSet=ANSI
Format=Delimited( )
MaxScanRows=0
DecimalSymbol=.
[/vba]
[test.txt] имя файла
ColNameHeader=False наличие заголовка
CharacterSet=ANSI кодировка ANSI 1251, DOS 866, ...
Format=Delimited( ) в скобках пишем разделитель
MaxScanRows=0 кол-во строк, анализируемое для определения типа полей (0 - весь файл)
DecimalSymbol=. десятичный разделитель


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПопробуй так (правда, я не уверен)
Создай его сам и положи В ТУ ЖЕ ПАПКУ!
примерно так
[vba]
Код
[test.txt]
ColNameHeader=False
CharacterSet=ANSI
Format=Delimited( )
MaxScanRows=0
DecimalSymbol=.
[/vba]
[test.txt] имя файла
ColNameHeader=False наличие заголовка
CharacterSet=ANSI кодировка ANSI 1251, DOS 866, ...
Format=Delimited( ) в скобках пишем разделитель
MaxScanRows=0 кол-во строк, анализируемое для определения типа полей (0 - весь файл)
DecimalSymbol=. десятичный разделитель

Автор - _Boroda_
Дата добавления - 16.04.2013 в 13:19
nerv Дата: Вторник, 16.04.2013, 14:33 | Сообщение № 3
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

_Boroda_, спасибо. Почитал инет, все так, как ты написал. Одна маленькая проблема - не работает wacko

Самое интересное, что если изменить разделитель на любой другой и прописать это в строке подключения, то все хорошо.


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщение_Boroda_, спасибо. Почитал инет, все так, как ты написал. Одна маленькая проблема - не работает wacko

Самое интересное, что если изменить разделитель на любой другой и прописать это в строке подключения, то все хорошо.

Автор - nerv
Дата добавления - 16.04.2013 в 14:33
_Boroda_ Дата: Вторник, 16.04.2013, 15:34 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У меня твой код вообще работать не хочет. Ругается на objConnection.Open и библиотеку ADO не хочет подключать. Так что проверить не мог.
Цитата (nerv)
изменить разделитель на любой другой и прописать это в строке подключения
А это была первая мысль - написать ...text;HDR=no;Format=Delimited( )", но проверить не мог, да и подумал, что жизнь тебе не мила без ини-шника.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ меня твой код вообще работать не хочет. Ругается на objConnection.Open и библиотеку ADO не хочет подключать. Так что проверить не мог.
Цитата (nerv)
изменить разделитель на любой другой и прописать это в строке подключения
А это была первая мысль - написать ...text;HDR=no;Format=Delimited( )", но проверить не мог, да и подумал, что жизнь тебе не мила без ини-шника.

Автор - _Boroda_
Дата добавления - 16.04.2013 в 15:34
nerv Дата: Пятница, 19.04.2013, 13:50 | Сообщение № 5
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Цитата (_Boroda_)
У меня твой код вообще работать не хочет.

подозреваю, что надо заменить это
[vba]
Код
"Provider=Microsoft.ACE.OLEDB.12.0;"
[/vba]
на это
[vba]
Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba]

Цитата (_Boroda_)
и подумал, что жизнь тебе не мила без ини-шника

мне главное, чтобы работало smile


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщение
Цитата (_Boroda_)
У меня твой код вообще работать не хочет.

подозреваю, что надо заменить это
[vba]
Код
"Provider=Microsoft.ACE.OLEDB.12.0;"
[/vba]
на это
[vba]
Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba]

Цитата (_Boroda_)
и подумал, что жизнь тебе не мила без ини-шника

мне главное, чтобы работало smile

Автор - nerv
Дата добавления - 19.04.2013 в 13:50
nerv Дата: Среда, 24.04.2013, 13:18 | Сообщение № 6
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Как оказалось, проблема была где-то в реестре. Причем она НЕ решалась файлом schema.ini.
Выручил такой код:

[vba]
Код
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:\\" & strComputer & _
        "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Jet\4.0\Engines\Text"
strValueName = "Format"
strValue = "TabDelimited"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
[/vba]

источник http://msdn.microsoft.com/en-us/library/ms974559.aspx

провайдер обязательно
[vba]
Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba]


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Среда, 24.04.2013, 13:21
 
Ответить
СообщениеКак оказалось, проблема была где-то в реестре. Причем она НЕ решалась файлом schema.ini.
Выручил такой код:

[vba]
Код
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:\\" & strComputer & _
        "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Jet\4.0\Engines\Text"
strValueName = "Format"
strValue = "TabDelimited"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
[/vba]

источник http://msdn.microsoft.com/en-us/library/ms974559.aspx

провайдер обязательно
[vba]
Код
"Provider=Microsoft.Jet.OLEDB.4.0;"
[/vba]

Автор - nerv
Дата добавления - 24.04.2013 в 13:18
Мир MS Excel » Вопросы и решения » Excel и другие приложения » SQL импорт из txt файла
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!