Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: импорт из Excel
 
 автор: dmsrv803   (31.05.2010 в 18:20)   личное сообщение
 
 

strSQL = "INSERT INTO Temp8 (F1, F2) SELECT A13, L16 FROM [Лист1$] IN '" & fileName & "' [Excel 8.0; HDR=no; IMEX=2;]"
dbs.Execute (strSQL)

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

  Ответить  
 
 автор: Анатолий (Киев)   (31.05.2010 в 20:25)   личное сообщение
 
 

Т.е. вы хотите вытянуть содержимое ячеек A13 и L16 одним запросом?
Ваша конструкция ошибочеа в принципе! JET рассматривает указанный лист (или диапазон) как таблицу из нескольких полей и нескольких записей в ней. Имена полей берутся из 1-й строки (если HDR=yes) или имеют имена F1,F2... (если HDR=no, как в вашем случае). Никакихх A13, L16 (тем более несмежных) он не понимает.
Попробуйте так:

strSQL = "INSERT INTO Temp8 (F1, F2) SELECT [Excel 8.0; HDR=no; IMEX=1;Database='" & fileName & "'].[Лист1$A13], 
[Excel 8.0; HDR=no; IMEX=1;Database='" & fileName & "'].[Лист1$L16] "

  Ответить  
 
 автор: dmsrv803   (01.06.2010 в 10:15)   личное сообщение
 
 

Попробовал - выдает ошибку: "Недопустимое имя."
А подскажите способ перекачать данных из нескольких сотен таблиц xls. Причем выборку необходимо призвести из разных ячеек, а не из диапазона.
Мной был уже реализован способ с использованием объектной переменной связанной с Excel - Set xllApp = CreateObject("Excel.Application"). Он работает, но очень медлено.
Необходимо оптимизировать процесс.

  Ответить  
 
 автор: snipe   (01.06.2010 в 10:21)   личное сообщение
 
 

Так вы хоть один файлик киньте
а то как-то голословно получается
(данные в файле можно и "левые", главное структура, что и откуда получать)

  Ответить  
 
 автор: dmsrv803   (01.06.2010 в 10:48)   личное сообщение
14 Кб.
 
 

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

  Ответить  
 
 автор: Анатолий (Киев)   (01.06.2010 в 10:42)   личное сообщение
 
 

strSQL = "INSERT INTO Temp8 (F1, F2) SELECT [Excel 8.0; HDR=no; IMEX=1;Database='" & fileName & "'].[Лист1$A13:A13],
[Excel 8.0; HDR=no; IMEX=1;Database='" & fileName & "'].[Лист1$L16:L16] "

Исправил ошибку (добавил выделенное). Попробуйте.

  Ответить  
 
 автор: dmsrv803   (01.06.2010 в 11:13)   личное сообщение
 
 

To Анатолий
Ошибка - Недопустимое имя
Упрощенный вариант:
strSQL = "SELECT [Excel 8.0; HDR=no; IMEX=1; Database='" & fileName& "'].[Лист1$C4:C4];"
также выдает ошибку
значение fileName - путь\имя таблицы - корректно. Проверял в других запросах.

  Ответить  
 
 автор: Анатолий (Киев)   (01.06.2010 в 13:45)   личное сообщение
 
 

Да, без FROM ну никак не хочет работать...
Вот проверенный вариант:
INSERT INTO Temp8 (F1, F2) SELECT * FROM
[Excel 8.0; HDR=no;IMEX=1;Database=M:\Temp\Temp1.xls].[Лист1$A13:A13],
[Excel 8.0; HDR=no; IMEX=1;Database=M:\Temp\Temp1.xls].[Лист1$L16:L16]

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList