С помощью ADOX с данными Excel из Visual Basic или VBA

Переводы статьи Переводы статьи
Код статьи: 303814 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

Расширения объектов данных ActiveX для языка определения данных и безопасности (ADOX) предоставляет разработчикам объектов данных ActiveX (ADO) возможности, присутствующие в Access объектов данным (DAO) для работы с базами данных, таблицы, поля и другие объекты базы данных программным способом. С момента выпуска Microsoft OLE DB Provider для Jet версии 4.0, который поддерживает драйверы ISAM, использующая ядро Jet с системной базы данных, отличных от Microsoft Access, разработчиков ADO были с помощью ADO и ADOX книги Microsoft Excel и листа.

Тем не менее так как на листе Excel не является обычной базой данных, ADO имеет некоторые ограничения при использовании в Microsoft Excel.В частности многие методы ADOX не работает или дать непредвиденные результаты, когда они используются в Microsoft Excel.В данной статье описываются многие ограничения ADOX и Excel.За дополнительной информацией об использовании ADO с Excel щелкните следующий номер статьи базы знаний Майкрософт:
257819Использование ADO с данными Excel из Visual Basic или VBA (эта ссылка может указывать на содержимое полностью или частично на английском языке)
Статья состоит из перечисленных ниже разделов.:

Примечание.: Тестирование в этой статье было сделано в Windows 2000 Server с пакетом обновления 2 (SP2) с помощью доступа К данным компонентов (MDAC) версии 2.6 с пакетом обновления 1, пакет обновления SP5 для Microsoft Visual Basic 6 и Microsoft Excel 2002 (XP). В данной статье не может подтвердить или рассматриваются различия в поведении, пользователи могут наблюдать в различных версиях Windows, компоненты MDAC, Excel или Visual Basic.

Дополнительная информация

Каталоги ADOX

В объектной модели ADOXcatalog:Представляет объект базы данных или из книги Excel.
  • Можно использовать ADOИнтернету.объект и строку соединения для создания или открытияcatalog:Объект. В следующем примере кода показано, как открыть Book1.xls как ADOXcatalog::
    Dim cat As ADOX.Catalog
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & App.Path & "\book1.xls;Extended Properties=Excel 8.0"
    					
  • надписьюcatalog:у объектаCreateметод, но не имеетDeleteметод.

Создание каталога

Нельзя использоватьCreateметод ADOXcatalog:объект, чтобы создать новую рабочую книгу Excel. При попытке сделать это, появляется следующее сообщение об ошибке:
Операция не поддерживается для этого типа объектов.
Тем не менее, можно создать новую рабочую книгу Excel, указав новое имя файла рабочей книги для вашего каталога и добавления хотя бы одну таблицу в новый каталог, используя методы, описанные ниже. Этот метод создаст новую книгу, а только листы, которые были созданы как ADOX таблицы; иными словами, по умолчанию число пустых листов для новую книгу Excel с помощью ExcelПараметрыдиалоговое окно не будет добавлен.

Таблицы ADOX

ADOXTABLEобъект соответствует какому-либо объектов Excel (то есть, лист или диапазон), которые можно использовать в качестве контейнера для данных.

Создание таблицы

ADOX можно использовать для создания новой таблицы в Excel. Because you cannot create a Table without also creating Columns, the code sample appears in the "ADOX Columns"в разделе.
  • Creating a new ADOX table creates both a new worksheet and a new named range on the new worksheet with the name specified. The new named range spans only the column headings. For example, if you create a table (worksheet) named MyTable with two columns, a named range MyTable, which is defined as MyTable!$A$1:$B$1, is also created.
  • You can specify a table name that includes a space; however, ADOX replaces the space with an underscore in the worksheet and range names that you create.
  • The new worksheet is created as the last sheet in the workbook, following the default number of empty sheets that are specified in Excel Options for a new workbook.
  • If you try to create a new table when the workbook is open in Excel, you receive the following error message:
    Неопределенная ошибка:.
  • If you try to create a table that has no columns defined, it appears to succeed, but in fact nothing is created.
  • If you try to change the name of an existing table, you receive the following error message:
    Operation is not supported for this type of object.

Deleting a Table

You cannot use ADOX to delete a table (worksheet) or named range in Excel, whether or not ADOX created it.
  • If you try to delete the worksheet (MyTable$), it appears to succeed without error, but the worksheet remains in the workbook. You can call theDeletemethod repeatedly without error, but it has no effect.
  • If you try to delete the range (MyTable), it appears to succeed without error, but the range remains in the workbook. However, if you try to delete the range a second time, you receive error 3265:
    Не удалось найти элемент в коллекции, соответствующий запрошенное имя или порядковый номер.
  • If you try to delete a named range, it leaves the named range definition intact, but any data in the range is deleted.

ADOX Columns

ADOX columns correspond to the columns or fields in a database and neatly correspond to the columns of an Excel worksheet.

ADO Data Types Used with Excel

ADO recognizes six data types in an Excel datasource that you can use to create columns:

  • adDouble, type 5
  • adDate, type 7
  • adCurrency, type 6
  • adBoolean, type 11
  • adVarWChar, type 202
  • adLongVarWChar ("memo"), type 203

Columns in General

  • You can append additional columns to a previously created table as long as the table does not contain any rows of data.
  • You can specify column names that include spaces.
  • ADOX always creates column headings that are preceded by a single quotation mark ('), for example, 'F1, 'Col1, 'Col2. However, this does not appear to cause a problem later because the name is retrieved without the quotation mark.

Creating Columns When Creating a Table

Creating columns works best when it is done at the same time that a new table is created using ADOX.

The following code creates a new table (worksheet) that contains two columns (one numeric and one text):
    Dim cat As ADOX.Catalog
    Dim tbl As ADOX.Table
    Dim col As ADOX.Column
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
	"Data Source=" & App.Path & "\book1.xls;Extended Properties=Excel 8.0"
    Set tbl = New ADOX.Table
    tbl.Name = "TestTable"
    Set col = New ADOX.Column
    With col
        .Name = "Col1"
        .Type = adDouble
    End With
    tbl.Columns.Append col
    Set col = Nothing
    Set col = New ADOX.Column
    With col
        .Name = "Col2"
        .Type = adVarWChar
    End With
    tbl.Columns.Append col
    cat.Tables.Append tbl
				

Creating Columns in an Existing Worksheet

Appending columns to a pre-existing, empty worksheet generates unusual results. When the first ADOX column is appended to the table's Columns collection, ADOX first creates a column header named F1 in Column A of the worksheet and then creates the new ADOX column header in Column B of the worksheet. Thus, ADOX code that appends two new columns results in three column headers. If you try to delete this unwanted, first column from the Columns collection before you append the first ADOX column, it appears to succeed, but the unwanted column is created nonetheless.

Deleting Columns

You cannot delete a column from an ADOX table in Excel.
  • If the column has no data, this appears to succeed without error, but the column and column header remain.
  • If the column contains data, the delete operation fails with the following error message:
    Invalid operation.

Changing the Data Type of an Existing Column

After a column has been appended to a table, if you try to set its .Type property to a different data type, you receive the following error message:
Operation is not allowed in this context.

Adding Data to Excel Tables and Columns

When you are testing ADO code with Excel in the Visual Basic design environment, the first time that you run a recordset operation, you may receive the following error message:
Selected collating sequence not supported by the operating system.
You can disregard this error message; this error does not occur after the application is compiled.Дополнительные сведения см. в следующей статье базы знаний Майкрософт::
246167Проблема: Объединение записей ADODB начало последовательности ошибок в первый раз С Excel XLS

Adding Data to Excel Columns That Are Created by ADOX

При использовании ADO для вставки или изменения данных в таблицах и столбцах, которые были созданы в Excel с помощью ADOX, ADO соблюдает типы данных, заданный для этих столбцов, хотя это и не очистить место хранения этой информации.
  • Все текстовые значения строки сохраняются предшествует знак кавычки. Тем не менее это не вызвать проблемы позже, так как извлечь значение без кавычек.
  • При попытке вставить строку текста в столбец, который определен как числовое или числа в столбце текста, появляется ошибка 80040e21:
    Несколько шагов операции создаются ошибки. Проверьте каждое значение состояния.

Добавление данных в основной столбцы в Excel

При использовании ADO для вставки или изменения данных в лист Excel или диапазоны, которые не были созданы или изменены с помощью ADOX, ограничения на тип данных, которые можно вставить не применяются.
  • Текстовые строки хранятся без предшествующего одинарную кавычку.
  • Числа отображаются по левому краю. В Microsoft Excel 2002 номера помечены с помощью смарт-тег, который предупреждает "Числа, хранящиеся как текст". Это может вызвать проблемы позже при работе с данными, особенно, если данные был сохранен в Microsoft Excel для анализа числовое.

С помощью SQL CREATE, ALTER и DROP инструкции

Выполнение инструкции языка определения данных (DDL) SQL Microsoft, такие как CREATE, ALTER и DROP для объектов базы данных Microsoft Excel через ADOИнтернету.Чтобы получить те же результаты, соответствующие методы ADOX, описанных выше.

Заключение

  • ADOX лучше всего работает с программой Microsoft Excel, при новой таблицы и ее столбцы будут созданы все в то же время.
  • ADO лучше всего работает с данными Excel, при сохранении данных в электронной таблице, созданной с помощью ADOX.

Свойства

Код статьи: 303814 - Последний отзыв: 22 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Ключевые слова: 
kbdatabase kbhowto kbiisam kbmt KB303814 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:303814

Отправить отзыв

 

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