Як використовувати ADO Excel дані з Visual Basic або VBA

Переклади статей Переклади статей
Номер статті: 257819 - Показ продуктів, яких стосується ця стаття.
Розгорнути все | Згорнути все

На цій сторінці

ПІДСУМКИ

У цій статті розглядається сценарій виконання об'єктів даних ActiveX (ADO) електронних таблицях Microsoft Excel як джерело даних. У статті також Підсвічує синтаксис проблеми та обмеження певних до Excel. Дана стаття робить не обговорюйте OLAP або зведеної таблиці технологій або інших спеціалізованих використовує Excel дані.

За додатковою інформацію, клацніть номер статті в регіоні Microsoft Knowledge Base:
303814 Як використовувати ADOX Microsoft Excel дані з Visual Basic або VBA

ДОДАТКОВІ ВІДОМОСТІ

ВВЕДЕННЯ

Рядки та стовпці аркуша Microsoft Excel тісно схожі на рядки та стовпці таблиці бази даних. Оскільки користувачі тримати розум, що Microsoft Excel не є система керування базами даних і визнати обмежень, які накладає цей факт, він часто має сенс вжити Перевага Excel та його інструментів, зберігати і аналізувати дані.

Microsoft об'єкти даних ActiveX дає можливість ставитися до книги Excel, як якби вона була базу даних. У цій статті обговорюється те, як виконати це в нижче розділи: Примітка: приймальні випробування для цієї статті було проведено з даними Microsoft Компоненти Access (MDAC) 2.5 Microsoft Windows 2000 з Visual Basic 6.0 Пакет оновлення 3 і Microsoft Excel 2000. Ця стаття може не визнати або обговорення відмінності в поведінці, які користувачі можуть спостерігати з різними версіями MDAC, Microsoft Windows, Visual Basic або Excel.

Підключитися до Excel за допомогою ADO

ADO, можна підключитися до файлу даних Excel з одного з двох OLE DB провайдерів, які включені в MDAC:
  • Microsoft Jet постачальника база даних OLE - або -

  • Постачальника Microsoft база даних OLE для драйверів ODBC

сценарій виконання постачальника Microsoft Jet база даних OLE

постачальник послуг оренди застосунків Jet вимагає тільки два шматки інформації в порядку для підключення до джерела даних Excel: шлях, включно з іменем файлу і в Версія файлу Excel.

постачальник послуг оренди застосунків Jet за допомогою рядка підключення
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
	.Provider = "Microsoft.Jet.OLEDB.4.0"
	.ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" & _
"Extended Properties=Excel 8.0;"
	.Open
End With
				
Версія постачальника: необхідно використовувати постачальник послуг оренди застосунків Jet 4.0; на постачальник послуг оренди застосунків Jet 3.51 не підтримує драйвери Jet ISAM. Якщо вказати на реактивний літак 3.51 постачальник послуг оренди застосунків, під Вільний час виконання, з'являється таке протокол IMAP про помилку:
Не вдалося знайти інсталювальний ISAM.
Версії Excel: вказати Excel 5.0 для книги Microsoft Excel 95 (Версія 7,0 Excel) і Excel 8.0 для Excel 97, Microsoft Excel 2000 або Excel 2002 (XP) книги (версії 8.0, 9.0 і 10.0 Excel).

постачальник послуг оренди застосунків Jet, за допомогою Запускач діалогових вікон Властивості зв'язок "один-до-одного" даних

Якщо використовується керування даних ADO або даних середовища у вашій програмі потім діалоговому вікні Властивості зв'язок "один-до-одного" з даними відображається зібрати необхідні підключення настройки.
  1. На вкладці служби виберіть Jet 4.0 постачальник; постачальник послуг оренди застосунків Jet 3.51 не робить Підтримка драйверів Jet ISAM. Якщо вказати Jet 3.51 постачальника, під Вільний час виконання з'являється таке протокол IMAP про помилку:
    Не вдалося знайти інсталювальний ISAM.
  2. На вкладці підключення перейдіть до файлу книги. Ігнорувати "Ідентифікатор користувача" і запис А бізнес-партнера "Пароль", тому що вони не діють для підключення до Excel. (Ви не вдається відкрити захищений паролем файлі Excel як джерело даних. Це ще все Інформація на цю тему далі в цій статті.)
  3. На вкладці УсіРозширені властивості виберіть зі списку та натисніть кнопку Редагувати значення. Введіть Excel 8.0; відділяє його від інших наявних записів з комою (;). Якщо ви пропустити цей крок, з'являється протокол IMAP про помилку, коли ви перевірити ваш підключення, оскільки постачальник послуг оренди застосунків Jet очікує бази даних Microsoft Access, якщо вказано інакше.
  4. Поверніться на вкладку підключення і натисніть кнопку Test підключення. Зверніть увагу, що відобразиться вікно протокол IMAP сповіщає про це процес вдалося.
Інші параметри підключення постачальник послуг оренди застосунків Jet

Заголовки стовпців: за промовчанням, стверджується, що перший рядок джерело даних Microsoft Excel містить заголовки стовпців, які можуть бути використані як поле імена. Якщо це не так, необхідно увімкнути цей параметр, або ваш перший рядок даних "зникає" бути використані як імена полів. Це робиться шляхом запит на додавання до Факультативний HDR = налаштування Розширені властивості рядка підключення. За промовчанням, які не повинні бути вказано, є HDR \u003d так. Якщо ви не маєте заголовки стовпців, слід указати HDR = немає; постачальник послуг оренди застосунків імен ваших полів F1, F2, тощо. Оскільки рядок Розширені властивості тепер містить кілька значень, його потрібно взяти в подвійні лапки, плюс додаткову пару подвійних лапок розповісти Visual Основні ставитися до першого набору котирування як текстові значення, як і наступні Приклад (де додаткових пробілів були додані для чіткості).
.ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" & _
"Extended Properties=" " Excel 8.0; HDR=No;" " "
				

сценарій виконання постачальника Microsoft база даних OLE для драйверів ODBC

постачальник послуг оренди застосунків для драйверів ODBC, (який ця стаття відноситься до якості "ODBC постачальник" для стислості) також вимагає тільки два (2) шт. інформації, щоб підключитися до джерела даних Excel: ім'я драйвера і книги шлях та ім'я файлу.

Важливо: ODBC підключення до Excel доступна лише для читання за промовчанням. Ваш ADO Значення властивості LockType набір записів не скасовує цей параметр підключення до рівня. Необхідно встановити ReadOnly має значення ХИБНІСТЬ у вашому рядка підключення або DSN конфігурації за бажанням Щоб редагувати дані. В іншому випадку з'являється таке протокол IMAP про помилку:
Операцію слід використати запит на оновлюваним.
ODBC провайдера за допомогою рядка підключення DSN-менш
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
	.Provider = "MSDASQL"
	.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=C:\MyFolder\MyWorkbook.xls; ReadOnly=False;"
	.Open
End With
				
ODBC провайдера за допомогою рядка підключення з на DSN
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
	.Provider = "MSDASQL"
	.ConnectionString = "DSN=MyExcelDSN;"
	.Open
End With
				
ODBC провайдера за допомогою Запускач діалогових вікон Властивості зв'язок "один-до-одного" даних

Якщо використовується керування даних ADO або даних середовища у вашій програмі потім діалоговому вікні Властивості зв'язок "один-до-одного" з даними відображається зібрати необхідні підключення настройки.
  1. На вкладці служби виберіть Постачальника Microsoft база даних OLE для драйверів ODBC.
  2. На вкладці підключення виберіть існуючий DSN, який потрібно використовувати, або вибрати за допомогою рядка підключення. Це викликає стандартний DSN конфігурації Запускач діалогових вікон для Збирання параметрів необхідно підключення. Пам'ятайте, щоб зняти виділення за промовчанням Параметри лише для читання за бажанням, як згадувалося раніше.
  3. Поверніться на вкладку підключення і натисніть кнопку Test підключення. Зверніть увагу, що відобразиться вікно протокол IMAP сповіщає про це процес вдалося.
Інші параметри підключення постачальник послуг оренди застосунків ODBC

Заголовки стовпців: за промовчанням, стверджується, що перший рядок джерело даних Microsoft Excel містить заголовки стовпців, які можуть бути використані як поле імена. Якщо це не так, необхідно увімкнути цей параметр, або ваш перший рядок даних "зникає" бути використані як імена полів. Це робиться шляхом запит на додавання до Факультативний FirstRowHasNames = налаштування до рядка підключення. За промовчанням, яка не повинні бути визначені, є FirstRowHasNames = 1, де 1 = True. Якщо ви не маєте заголовки стовпців, слід указати FirstRowHasNames = 0, де 0 = False; драйвер імена полів F1, F2 і так далі. Цей параметр недоступний у діалоговому вікні Конфігурація DSN.

Проте, Помилка в драйвера ODBC, вказавши FirstRowHasNames установка в даний Вільний час не діє. Іншими словами, Excel ODBC драйвер (MDAC 2.1 і пізніше) завжди відноситься до першого рядка у вказані дані джерело як імена полів. Для додаткового informationon Заголовок впорядкована стопка карт з чергуванням кольорів помилку, клацніть номер статті в Microsoft Knowledge Base:
288343 Помилка: драйвер ODBC Excel ігнорує FirstRowHasNames або настройки заголовок
Рядки для сканування: Excel не підтримує ADO з детальну схему Інформація про дані його містить, як би реляційної бази даних. Таким чином, водій повинен сканувати через принаймні кілька рядків з існуючих дані для того, щоб зробити припущення на тип даних кожного впорядкована стопка карт з чергуванням кольорів. На за промовчанням для "Рядки для сканування" є вісім (8) рядків. Ви можете вказати значення цілого числа з одним (1) до (шістнадцять) рядків, або вказати нуль (0) сканувати всі існуючі рядки. Це робиться шляхом запит на додавання факультативним MaxScanRows = автоматична інсталяція з рядка підключення, або зміни рядків для сканування налаштування у діалоговому вікні Конфігурація DSN.

Однак, через помилку в драйвера ODBC вказавши рядки для сканування (MaxScanRows) Установка в даний Вільний час не матиме ефекту. Іншими словами, драйвер Excel ODBC (MDAC 2.1 і пізніше) завжди сканує перші 8 рядків у указаним джерелом даних в для того, щоб визначити тип даних кожного впорядкована стопка карт з чергуванням кольорів.

Щоб отримати додаткові відомості про Рядки для сканування помилку, включаючи простий обхідний шлях, клацніть номер статті Щоб переглянути статтю в базі знань Microsoft Knowledge Base:
189897 XL97: Дані скорочено до 255 знаків з Excel драйвер ODBC
Інші настройки: Якщо ви побудувати ваш рядок підключення за допомогою діалогове вікно Властивості зв'язок "один-до-одного" з даними , ви можете помітити деякі інші Розширені властивості настройки додається до рядка підключення, які не є абсолютно потреби, такі як:
... DefaultDir=C:\WorkbookPath;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5;
				
"Систематизації послідовність" протокол IMAP про помилку в редакторі Visual Basic

В середовищі Visual Basic дизайн з певним версії MDAC, можуть з'явитися такі протокол IMAP перший Вільний час помилки ваш програма підключається до джерела даних Excel під Вільний час розробки:
Виділені collating послідовності не підтримується операційною системою.
Це протокол IMAP з'являється тільки в IDE і не буде з'являтися в на скомпільований Версія програми. Для Щоб отримати додаткові відомості, клацніть номер статті в Microsoft Knowledge Base:
246167 PRB: Систематизації послідовність Помилка відкриття ADODB набір записів вперше проти Excel XLS

Міркування, які стосуються обох доступу база даних OLE

Застереження про змішані типи даних

Як зазначалося раніше, ADO повинні вгадати тип даних для кожного впорядкована стопка карт з чергуванням кольорів в Excel аркуша або діапазону. (Це не впливає на Excel параметри форматування клітинок). Серйозні проблеми можуть виникнути, якщо у вас є числові значення, змішаної з текстові значення в тому самому стовпці. Обидва Jet і на постачальник послуг оренди застосунків ODBC повернення даних більшість введіть, але повернення значення NULL (пусте) значення типу даних меншості. Якщо два типи не менш змішані у регіоні стовпець, постачальник послуг оренди застосунків вибирає цифровій над текстом.

Наприклад:
  • У вашому 8 (вісім) відсканованих рядків, якщо стовпець містить п'ять (5) числові значення та текстові значення трьох (3), постачальник послуг оренди застосунків повертає п'ять (5) номери і три (3) значення null.
  • У вашому 8 (вісім) відсканованих рядків, якщо стовпець містить три (3) числові значення та текстові значення п'ять (5), постачальник послуг оренди застосунків повертає три (3) значення null і п'ять (5) текстові значення.
  • У вашому 8 (вісім) відсканованих рядків, якщо стовпець містить чотири (4) числові значення та текстові значення чотирьох (4), постачальник послуг оренди застосунків повертає чотири (4) числа і чотири (4) значення null.
Як результат, якщо ваш стовпець містить різні значення ваш єдиний звернення полягає в тому, щоб зберігати числові значення в цьому стовпці, як текст і перетворити їх назад до числа, коли необхідно у клієнтський застосунок за допомогою Visual Basic Функцію VAL або еквівалент.

Щоб вирішити цю проблему для даних лише для читання, Увімкнення Режиму імпорту за допомогою параметру "IMEX = 1" у розділі розширені властивості з рядка підключення. Це забезпечує в ImportMixedTypes = текст параметр реєстру. Проте зверніть увагу, що оновлення може дати неочікувані Результати в цьому режимі. Щоб отримати додаткові відомості про цей параметр натисніть кнопку Номер для перегляду статті в базі знань Microsoft Knowledge Base:
194124 PRB: Excel значень NULL, використовуючи ДАО OpenRecordset
Не вдається відкрити захищену паролем книгу

Якщо книгу Excel захищено паролем, ви не вдається відкрити його для доступу до даних, навіть шляхом надання правильний пароль з Параметри підключення, якщо тільки файлу книги не відкривати в регіоні Застосунок Microsoft Excel. Якщо ви спробуєте, з'являється таке протокол IMAP про помилку повідомлення:
Не вдалося розшифрувати файл.
Щоб отримати додаткові відомості, клацніть номер для перегляду знань Майкрософт, у статті База:
211378 XL2000: "Не вдалося розшифрувати файл" помилка з пароль захищений файл

Отримання та редагування даних Excel за допомогою ADO

У цьому розділі описано два аспекти роботи з вашого Excel дані:
  • Як виділити дані - і -

  • Як змінити дані

Як виділити дані

Є кілька способів, щоб вибрати дані. Ти можеш:

  • Виберіть дані Microsoft Excel з кодом.
  • Виберіть Microsoft Excel дані з елемента керування даних ADO.
  • Виберіть дані Microsoft Excel з даними навколишнього середовища команди.

Виберіть дані Microsoft Excel з кодом

Дані Excel можуть міститися у книзі в одному з на наступні:

  • Весь аркуш.
  • Іменований діапазон клітинок на аркуші.
  • Без назви діапазон клітинок на аркуші.
Вкажіть аркуш

Щоб указати аркуша, як ваш recordsource, використовувати в ім'я аркуша слідує знак долара і оточений квадратні дужки. Для Приклад:
	strQuery = "SELECT * FROM [Sheet1$]"
				
Ви також можете розмежувати ім'я аркуша з похилої одинарну лапку символ (') на клавіатурі під тильда (~). Наприклад:
	strQuery = "SELECT * FROM `Sheet1$`"
				
Microsoft вважає за краще квадратні дужки, які постійно Конвенція проблематично база даних імен об'єктів.

Якщо пропустити предикат обидва знак долара і квадратні дужки або просто знак долара з'являється на таке протокол IMAP про помилку:
... Jet database engine не вдалося знайти вказаний об'єкт
Якщо ви використовуєте знак долара, але пропускається дужки, з'являється таке протокол IMAP про помилку:
Синтаксична помилка в реченні FROM.
Якщо спробувати використовувати звичайні лапки, з'являється таке протокол IMAP про помилку:
Синтаксична помилка в запиті. Неповний запит застереження.
Визначити іменований діапазон

Щоб визначити іменований діапазон клітинок як recordsource, просто використовуйте визначене ім'я. Наприклад:
	strQuery = "SELECT * FROM MyRange"
				
Укажіть діапазон без імені

Щоб указати без імені діапазону клітинок, як ваш RecordSource, додати стандартні позначення рядків/стовпців Excel до кінця вікна ім'я в квадратні дужки. Наприклад:
	strQuery = "SELECT * FROM [Sheet1$A1:B10]"
				
Застереження про зазначення аркушів: постачальник послуг оренди застосунків припускає, що таблиці даних починається з верхнього більшість, зліва, пусті клітинки на вказаному аркуші. У іншими словами, таблиці даних можна почати в рядку 3, стовпець c без проблем. Однак, не може наприклад, введіть назву worksheeet вище і ліворуч дані у клітинці A1.

Застереження про вказання діапазонів: коли ви визначаєте аркуші як recordsource, постачальник послуг оренди застосунків додає нові запис А бізнес-партнера в нижче наявних записів на аркуші як простір дозволяє. Коли ви вкажіть діапазон (названий або без імені), Jet також додає нові запис А бізнес-партнера нижче наявних записів у діапазоні як простору дозволяє. Однак, якщо ви Повторний на початковому діапазоні, отриманий набір записів не впливає на Нещодавно додали записів за межами діапазону.

З версії MDAC до 2.5, коли вам визначити іменований діапазон, неможливо додавати нові запис А бізнес-партнера за межі на визначені межі діапазону, або з'являється таке протокол IMAP про помилку:
Не вдається деталізувати іменований діапазон.

Виберіть Microsoft Excel дані з елемента керування даних ADO

Після визначення параметрів підключення для дані Excel джерела на вкладці " Загальні " Запускач діалогових вікон ADODC Властивості , Відкрити вкладку Recordsource . Якщо ви обираєте CommandType з adCmdText, ви можете ввести в вибірковий запит у діалоговому вікні Текст команди з синтаксисом, описаних раніше. Якщо ви обираєте CommandType, adCmdTable, і ви використовуєте постачальник послуг оренди застосунків Jet, у розкривному списку список відображення іменованих діапазонів і імена аркушів, які доступні в вибраної книги, з іменовані діапазони, перелічених у першу чергу.

Це діалогове вікно поле належним чином додається знак долара на аркуші імена, але не додає до необхідні квадратні дужки. У результаті, якщо ви просто вибрати ім'я аркуша натисніть кнопку OK, з'являється таке протокол IMAP про помилку пізніше:
Синтаксична помилка в реченні FROM.
Ви повинні Ручне запит на додавання квадратні дужки навколо ім'я аркуша. (Це область коректування дозволити редагування.) Якщо ви використовуєте службу ODBC, ви бачите, що тільки їм діапазони, перераховані в цьому списку. Однак, можна ввести вручну ім'я аркуша з відповідними роздільники.

Виберіть дані Microsoft Excel з даних середовища команд

Після настроювання зв'язок "один-до-одного" даних середовища для вашого Excel дані джерела, створити нові команду об'єкт. Якщо джерело данихSQL-оператор, можна ввести запит у текстове поле, використовуючи синтаксис описав раніше. Якщо Вихідні дані з Бази даних об'єкт, виберіть таблицю в перший розкривний список і ви використовуєте постачальник послуг оренди застосунків Jet, розкривний список відображається іменовані діапазони й аркуші імена доступні в вибраної книги, з іменовані діапазони, перелічених у першу чергу. (Якщо ви обираєте ім'я аркуша в цьому місці, не потрібно додати у квадратних дужках ім'я аркуша вручну, як ви робити для керування даних ADO). Якщо ви за допомогою ODBC провайдера, ви бачите тільки іменовані діапазони у цей розкривного списку список. Однак, можна вручну ввести ім'я аркуша.

Як дані Microsoft Excel змінити: редагувати, додати та видалити

Редагувати

Ви можете редагувати дані Microsoft Excel з нормальним ADO методами. Поля набір записів, які відповідають клітинок в аркуші Excel містить Excel формули (починаючи з "="), доступні лише для читання та не підлягає редагуванню. Пам'ятайте, що підключення до ODBC до Microsoft Excel лише для читання за промовчанням, якщо ви Вкажіть в іншому випадку, в параметри підключення. Див раніше під "використання в Microsoft база даних OLE постачальника для драйвери ODBC."

Додати

Можна додавати запис А бізнес-партнера до Excel recordsource як простір дозволяє. Однак, якщо додати нові запис А бізнес-партнера за межами діапазону що ви спочатку вказано, ці запис А бізнес-партнера не є видимим, якщо ви Повторний запит на початковому діапазоні специфікації. Див раніше під "Застереження про вказання діапазонів."

За певних обставин під Вільний час сценарій виконання AddNew і оновлення методи об'єкта ADO Recordset вставити нові рядки даних у таблиці Excel ADO може вставити значення даних в неправильному стовпців в Excel. Щоб отримати додаткові відомості клацніть статтю номер статті в базі знань Microsoft Knowledge Base:
314763 FIX: ADO Вставка даних до неправильно стовпців в Excel
Видалити

Ви більш обмежені в видалення даних Excel, ніж дані з реляційних даних джерела. Реляційні бази даних не має "рядок" значення або існування, крім "запис"; в аркуші Excel це не Істина. Ви можете видалити значення в полях (клітини). Однак, ви не можете:
  1. Видалити весь запис А одночасно або ви отримаєте на таке протокол IMAP про помилку:
    Видалення даних у зв'язаній таблиці не підтримується цей ISAM.
    Можна видалити запис А на гасіння з вміст кожного окремого поля.
  2. Видалити значення клітинки, яка містить формулу Microsoft Excel або з'являється таке протокол IMAP про помилку:
    Операція елемент у цьому контексті.
  3. Неможливо видалити порожні електронної таблиці рядків, у яких на видалені дані був розташований, і ваш набір записів, як і раніше відображення пустих запис А бізнес-партнера, що відповідає на ці пусті рядки.
Застереження про редагування даних Excel за допомогою ADO: під Вільний час вставлення тексту даних в Excel за допомогою ADO, на текстове значення, яке стоїть жодної цитати. Це може призвести до проблем, пізніше в Робота з нових даних.

Отримання структуру даних джерела (метадані) з Excel

Можна отримати дані про структуру даних Excel джерело (таблиці і поля) з ЦЕРЕМОНІЙ. Результати різняться незначно між двома база даних OLE провайдерів, хоча обидва повернення принаймні ж невелику кількість корисних поля даних. Метадані можуть бути отримані з методом OpenSchema об'єкта ADO з'єднання , яка повертає об'єкта ADO Recordset . Ви також можете використовувати більш потужний даних Microsoft ActiveX Розширення об'єктів для даних визначення мови і безпеки (ADOX) для бібліотеки цієї мети. У випадку з джерела даних Excel Однак, де "Таблиця" є аркуш або іменований діапазон і "поля" є одним з обмеженим з загальним datatypes ця додаткова влада не є корисним.

Запит таблиці даних

Різні об'єкти доступні в реляційній базі даних (таблиць, переглядів, збережених процедур і так далі), піддає джерела даних Excel лише таблиці еквіваленти, що складається з аркушів Excel та іменованих діапазонів визначених у вказаний книги. Іменовані діапазони вважаються "Таблицях" і аркушів розглядатимуться як "Системні таблиці", і там не багато корисних таблиці інформацію можна отримати за межами цієї властивості "table_type". Ви запитуєте список доступних таблиць у книзі з наступний код:
Set rs = cn.OpenSchema(adSchemaTables)
				
постачальник послуг оренди застосунків Jet повертає набір записів з дев'яти (9) поля, які він заповнює лише чотири (4):

  • table_name
  • table_type ("Таблиця" або "Системи таблиці")
  • date_created
  • date_modified
Дата два поля для даної таблиці завжди відображати те ж саме значення, яке, як видається, "Дата останньої зміни." Іншими словами, "date_created" не є надійним.

постачальник послуг оренди застосунків ODBC також повертає на набір записів з дев'яти (9) поля, яких вона заповнює тільки три (3):

  • table_catalog, каталог вхідних повідомлень, в якій книги розташований.
  • table_name.
  • table_type, як зазначалося раніше.
Згідно документації ADO це можливо, для отримання список аркушів тільки, наприклад, вказавши наступні додаткові критерії для OpenSchema метод:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "System Table"))
				
На жаль, це не працює проти джерела даних Excel з Пізніше, ніж 2.0, за допомогою будь-якого провайдера MDAC версії.

Дані полів запит на змінення

Кожне поле (стовпець) джерела даних Excel є одним з на Наступні datatypes:

  • числові (тип даних ADO 5, adDouble)
  • валюти (тип даних ADO 6, adCurrency)
  • логічна або логічне значення (тип даних ADO 11, adBoolean)
  • Дата (тип даних ADO 7, adDate, використовуючи Jet; 135, adDBTimestamp, за допомогою ODBC)
  • текст (ADO оголошення...Чар типу, наприклад, 202, adVarChar, 200, adVarWChar або аналогічний)
Numeric_precision для числовому стовпці завжди повертається як 15, (що є Максимальна точність у Microsoft Excel); на character_maximum_length тексту впорядкована стопка карт з чергуванням кольорів завжди повертаються у вигляді 255, (що є Максимальна відображувану ширину, але не максимальну довжину, тексту у стовпці в Excel). Існує не так багато відомості корисні поля, що ви можете отримати за межами data_type власності. Запит списку наявних полів у таблиці з такий код:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, "TableName", Empty))
				
постачальник послуг оренди застосунків Jet повертає набір записів, що містить 28 поля, яких вона заповнює 8 (вісім) для числових полів і дев'ять (9) для текстового поля. На корисні поля, ймовірно, це:

  • table_name
  • column_name
  • ordinal_position
  • data_type
ODBC постачальник послуг оренди застосунків повертає набір записів, які містять 29 поля, з яка вона заповнює 10 (десяти) для числових полів і 11 для текстового поля. На корисні поля такі ж, як раніше.

Перерахувати таблиці та поля та їх властивості

Код Visual Basic (наприклад, наступні приклади) можуть бути використані для перелічити таблиць і стовпців джерела даних Microsoft Excel а також поля даних про кожного. Цей зразок виводить його результати до списку, List1, в одній формі.
Dim cn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim intTblCnt As Integer, intTblFlds As Integer
Dim strTbl As String
Dim rsC As ADODB.Recordset
Dim intColCnt As Integer, intColFlds As Integer
Dim strCol As String
Dim t As Integer, c As Integer, f As Integer
Set cn = New ADODB.Connection
With cn
	.Provider = "Microsoft.Jet.OLEDB.4.0"
	.ConnectionString = "Data Source=" & App.Path & _
"\ExcelSrc.xls;Extended Properties=Excel 8.0;"
	'.Provider = "MSDASQL"
	'.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & App.Path & "\ExcelSrc.xls; "
	.CursorLocation = adUseClient
	.Open
End With
Set rsT = cn.OpenSchema(adSchemaTables)
intTblCnt = rsT.RecordCount
intTblFlds = rsT.Fields.Count
List1.AddItem "Tables:	" & intTblCnt
List1.AddItem "--------------------"
For t = 1 To intTblCnt
	strTbl = rsT.Fields("TABLE_NAME").Value
	List1.AddItem vbTab & "Table #" & t & ":	" & strTbl
	List1.AddItem vbTab & "--------------------"
	For f = 0 To intTblFlds - 1
		List1.AddItem vbTab & rsT.Fields(f).Name & _
vbTab & rsT.Fields(f).Value
	Next
	List1.AddItem "--------------------"
	Set rsC = cn.OpenSchema(adSchemaColumns, Array(Empty, Empty, strTbl, Empty))
	intColCnt = rsC.RecordCount
	intColFlds = rsC.Fields.Count
	For c = 1 To intColCnt
		strCol = rsC.Fields("COLUMN_NAME").Value
		List1.AddItem vbTab & vbTab & "Column #" & c & ": " & strCol
		List1.AddItem vbTab & vbTab & "--------------------"
		For f = 0 To intColFlds - 1
			List1.AddItem vbTab & vbTab & rsC.Fields(f).Name & _
vbTab & rsC.Fields(f).Value
		Next
		List1.AddItem vbTab & vbTab & "--------------------"
		rsC.MoveNext
		Next
		rsC.Close
		List1.AddItem "--------------------"
		rsT.MoveNext
Next
rsT.Close
cn.Close
				

Використовуйте вікно подання елементів даних

Якщо створити зв'язок даних із джерелом даних Microsoft Excel у візуально Основні подання елементів даних вікно, вікно перегляду даних відображає ту ж інформацію, Ви можете отримати програмним способом, як описано вище. Зокрема, зверніть увагу що постачальник послуг оренди застосунків Jet списку аркушів та іменованих діапазонів у розділі "Таблиць" де ODBC постачальник послуг оренди застосунків показує тільки іменовані діапазони. Якщо ви використовуєте на ODBC Постачальника послуг і мають не визначено будь-який іменовані діапазони, "Столи" списку буде порожній.

Excel обмеження

сценарій виконання Excel в якості джерела даних пов'язаний з внутрішніх обмеження Excel книг і аркушів. Вони включають, але не обмеженою до:

  • Аркуш розміру: 65536 рядків за 256 стовпців
  • Стільниковий вміст (текст): 32 767 знаків
  • Аркуші книги:, обмежена доступним пам'ять
  • Кількість імен у книзі: обмежено доступною пам'яттю

ПОСИЛАННЯ

Щоб отримати додаткові відомості про сценарій виконання ADO.NET до отримання та змінювати запис А бізнес-партнера у книзі Excel з .net Visual Basic, натисніть кнопку номер статті для перегляду статті в знань Microsoft База:
316934Як використовувати ADO.NET витягати і змінювати запис А бізнес-партнера у книзі Excel З Visual Basic .net
Щоб отримати додаткові відомості, клацніть на Номер для перегляду статті в базі знань Microsoft Knowledge Base:
295646 перенесення даних із джерела даних ADO до Excel за допомогою ADO
246335 перенесення даних з набору записів ADO до Excel за допомогою автоматизації
247412 ІНФОРМАЦІЯ: Методи для перенесення даних до Excel з Visual Basic
278973 Приклад: ExcelADO демонструє, як читати і записувати дані в робочих книгах Excel за допомогою ADO
318373 Як отримати метадані з Excel за допомогою методу GetOleDbSchemaTable Visual Basic .net

Властивості

Номер статті: 257819 - Востаннє переглянуто: 28 червня 2012 р. - Редакція: 2.0
ЗАСТОСОВУЄТЬСЯ ДО:
  • Microsoft Excel 2000 - стандартний випуск
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic для додатків 6.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Excel 2002 - стандартний випуск
  • Microsoft Excel 97 - стандартний випуск
  • Microsoft Excel 95 - стандартний випуск
Ключові слова: 
kbhowto kbiisam kbmt KB257819 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 257819

Надіслати відгук

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com