не всегда открывается файл Excel при помощи ADODB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
mormax
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 16.01.2006 (Пн) 14:35

не всегда открывается файл Excel при помощи ADODB

Сообщение mormax » 20.01.2006 (Пт) 14:39

Имеется такой вот код:
Код: Выделить всё
....
                Dim cn As ADODB.Connection
                Set cn = New ADODB.Connection
                Dim RST As New ADODB.Recordset
     
                With cn
                    .CursorLocation = adUseClient
                    .Mode = adModeRead
                    .Provider = "Microsoft.Jet.OLEDB.4.0"
                    .ConnectionString = "Data Source=" & Left(OpenFile.lpstrFile, InStr(OpenFile.lpstrFile, vbNullChar) - 1) & ";Mode=Read; Extended Properties=""Excel 8.0;HDR=No;IMEX=1"""
                 
                    .Open
                End With
     
               Set RST.ActiveConnection = cn
               
               RST.Open "SELECT F1, F2 , F4, F5, F8, F12, F13 FROM [Sheet1$] where f2='/06'", cn, adOpenStatic, adLockReadOnly
...


При запуске программы если указанный файл открыт в Excel, то все работает нормально. А если закрыт, то выскакивает ошибка "Внешняя таблица не имеет предполагаемый формат"!
В чем дело?
Что надо сделать,чтобы таблица Excel считывалась и при закрытом файле?

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 20.01.2006 (Пт) 18:13

Открыть
Прочесть
Закрыть
Пора уже всем хорошим людям собраться и убить всех плохих людей.

mormax
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 16.01.2006 (Пн) 14:35

Сообщение mormax » 22.01.2006 (Вс) 17:21

То есть это необходимое условие?
Тогда почему об этом ни сказано ни слова в этом документе: http://support.microsoft.com/default.as ... -us;257819 ?

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

Сообщение GSerg » 22.01.2006 (Вс) 17:35

Мне вообще интересен сам запрос, а также то, почему он вообще выполняется (ибо не должен). Код правильный. Если сменить запрос на SELECT * FROM [Sheet1$], то всё работает.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

mormax
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 16.01.2006 (Пн) 14:35

Сообщение mormax » 22.01.2006 (Вс) 17:44

Запрос, что выше написан, выполняется правильно. Завтра попробую запрос без условия.

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

Сообщение GSerg » 22.01.2006 (Вс) 17:57

Условие можно, но не такое.

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

mormax
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 16.01.2006 (Пн) 14:35

Сообщение mormax » 23.01.2006 (Пн) 9:01

Так там вообще то и указываются поля базы - столбцы, они автоматически так обзываются. Можно так, а можно и чтобы имя поля было в первой ячейке столбця.

mormax
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 16.01.2006 (Пн) 14:35

Сообщение mormax » 23.01.2006 (Пн) 9:44

Все, разобрался!
A caution about specifying worksheets: The provider assumes that your table of data begins with the upper-most, left-most, non-blank cell on the specified worksheet. In other words, your table of data can begin in Row 3, Column C without a problem. However, you cannot, for example, type a worksheeet title above and to the left of the data in cell A1.


У меня ячейка А1 как раз была пустой, потому и не открыволось как надо!


Вернуться в Visual Basic 1–6

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

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

    TopList