Bagaimana menggunakan ADO dengan Data Excel dari Visual Basic atau VBA

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 257819 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini membahas penggunaan objek Data ActiveX (ADO) dengan spreadsheet Microsoft Excel sebagai sumber data. Artikel juga menyoroti isu-isu sintaks dan keterbatasan tertentu ke Excel. Tulisan ini tidak mendiskusikan OLAP atau PivotTable teknologi atau lain khusus menggunakan Excel data.

Untuk tambahan informasi, klik nomor artikel di bawah ini untuk melihat artikel di Basis Pengetahuan Microsoft:
303814 Cara menggunakan ADOX dengan Data Excel dari Visual Basic atau VBA

INFORMASI LEBIH LANJUT

PENDAHULUAN

Baris dan kolom dari Microsoft Excel spreadsheet erat menyerupai baris dan kolom tabel database. Selama pengguna pikiran bahwa Microsoft Excel bukanlah sebuah sistem manajemen basisdata relasional, dan mengakui keterbatasan-keterbatasan yang memaksakan fakta ini, itu sering masuk akal untuk mengambil keuntungan dari Excel dan alat-alat untuk menyimpan dan menganalisis data.

Microsoft Objek Data ActiveX memungkinkan untuk mengobati buku kerja Excel seolah-olah itu database. Artikel ini membahas cara untuk mencapai hal ini dalam berikut bagian: CATATAN: Pengujian untuk artikel ini dilakukan dengan Microsoft Data Akses komponen (MDAC) 2,5 pada Microsoft Windows 2000 dengan Visual Basic 6.0 Service Pack 3 dan Excel 2000. Artikel ini tidak dapat mengakui atau mendiskusikan perbedaan dalam perilaku yang pengguna dapat mengamati dengan versi yang berbeda dari MDAC, Microsoft Windows, Visual Basic, atau Excel.

Menyambung ke Excel dengan ADO

ADO dapat terhubung ke Excel file data dengan salah satu dari dua OLE Penyedia DB termasuk dalam MDAC:
  • Microsoft Jet penyedia DB OLE - atau -

  • Penyedia DB Microsoft OLE untuk ODBC driver

Cara menggunakan penyedia DB OLE Microsoft Jet

Penyedia Jet memerlukan hanya dua lembar informasi dalam rangka untuk menyambung ke sumber data Excel: jalan, termasuk nama berkas, dan Versi berkas Excel.

Jet selular menggunakan rangkaian sambungan
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
				
Penyedia versi: Hal ini diperlukan untuk menggunakan penyedia 4.0 Jet; The Jet 3.51 penyedia tidak mendukung pengandar Jet ISAM. Jika Anda menetapkan Jet 3.51 Penyedia, pada jangka waktu yang Anda menerima pesan galat berikut:
Tidak bisa menemukan ISAM diinstal.
Versi Excel: Menentukan Excel 5.0 untuk buku kerja Excel 95 (versi 7,0 Excel), dan Excel 8.0 untuk Excel 97, Excel 2000 atau Excel 2002 (XP) buku kerja (versi 8.0, 9.0, dan 10,0 Excel).

Jet selular menggunakan kotak Dialog Properti Data Link

Jika Anda menggunakan ADO Data Control atau Data lingkungan dalam aplikasi Anda, kemudian Data Link properti kotak dialog akan ditampilkan untuk mengumpulkan sambungan diperlukan pengaturan.
  1. Pada Penyedia tab, pilih penyedia 4.0 Jet; Jet 3.51 penyedia tidak mendukung pengandar Jet ISAM. Jika Anda menentukan penyedia 3.51 Jet, saat menjalankan Anda menerima pesan galat berikut:
    Tidak bisa menemukan ISAM diinstal.
  2. Pada Sambungan tab, Telusuri untuk file buku kerja Anda. Mengabaikan "User ID" dan "Password" entri, karena ini tidak berlaku untuk koneksi Excel. (Anda tidak dapat membuka sandi-dilindungi berkas Excel sebagai sumber data. Ada lagi informasi mengenai topik ini nanti dalam artikel ini.)
  3. Pada All tab, pilih Panjang properti dalam daftar, dan kemudian klik Mengedit nilai. Masukkan Excel 8.0; memisahkan dari setiap lain ada entri dengan tanda titik koma (;). Jika Anda menghilangkan langkah ini, Anda menerima pesan galat ketika Anda tes Anda sambungan, karena penyedia Jet mengharapkan Microsoft Access database kecuali Anda menentukan sebaliknya.
  4. Kembali ke Sambungan tab dan klik Uji sambungan. Catatan yang muncul kotak pesan yang memberitahu Anda bahwa proses telah berhasil.
Pengaturan sambungan penyedia Jet lain

Judul kolom: Secara default, diasumsikan bahwa baris pertama sumber data Excel Anda berisi judul kolom yang dapat digunakan sebagai lapangan nama. Jika hal ini tidak terjadi, Anda harus mengubah ini berangkat, atau pertama Anda baris data "menghilang" untuk digunakan sebagai nama kolom. Hal ini dilakukan dengan menambahkan opsional HDR = pengaturan Panjang properti dari rangkaian sambungan. Default, yang tidak perlu ditentukan, adalah HDR = Yes. Jika Anda tidak memiliki judul kolom, Anda perlu menentukan HDR = No; penyedia nama kolom F1, F2, dll. Karena Panjang properti string sekarang berisi beberapa nilai, itu harus tertutup dalam ganda kutipan itu sendiri, ditambah tambahan sepasang tanda kutip ganda untuk memberitahu Visual Dasar untuk mengobati set pertama kutipan sebagai nilai literal, seperti dalam berikut contoh (di mana spasi tambahan telah ditambahkan untuk visual kejelasan).
.ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" & _
"Extended Properties=" " Excel 8.0; HDR=No;" " "
				

Menggunakan penyedia DB Microsoft OLE untuk ODBC driver

Penyedia untuk ODBC driver (yang artikel ini merujuk sebagai "ODBC penyedia" untuk kepentingan keringkasan) juga memerlukan hanya dua (2) potongan informasi untuk menyambung ke sumber data Excel: nama sopir, dan buku kerja jalur dan nama file.

PENTING: Koneksi ODBC ke Excel ini hanya bisa dibaca secara default. ADO Anda Recordset LockType pengaturan properti tidak menimpa pengaturan sambungan-tingkat ini. Anda harus mengatur ReadOnly untuk Palsu dalam rangkaian sambungan Anda atau konfigurasi DSN Anda jika Anda ingin untuk mengedit data Anda. Jika tidak, Anda menerima pesan galat berikut:
Operasi harus menggunakan permintaan updateable.
ODBC selular menggunakan rangkaian sambungan DSN-kurang
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 selular menggunakan String koneksi dengan DSN
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
	.Provider = "MSDASQL"
	.ConnectionString = "DSN=MyExcelDSN;"
	.Open
End With
				
ODBC selular menggunakan kotak Dialog Properti Data Link

Jika Anda menggunakan ADO Data Control atau Data lingkungan dalam aplikasi Anda, kemudian Data Link properti kotak dialog akan ditampilkan untuk mengumpulkan sambungan diperlukan pengaturan.
  1. Pada Penyedia tab, pilih Penyedia DB Microsoft OLE untuk ODBC driver.
  2. Pada Sambungan tab, pilih DSN ada yang ingin Anda gunakan, atau memilih Menggunakan rangkaian sambungan. Ini memunculkan standar DSN kotak dialog konfigurasi untuk mengumpulkan pengaturan sambungan yang diperlukan. Ingat untuk membatalkan default hanya-baca pengaturan jika diinginkan, seperti yang disebutkan sebelumnya.
  3. Kembali ke Sambungan tab, dan klik Uji sambungan. Catatan yang muncul kotak pesan yang memberitahu Anda bahwa proses telah berhasil.
Lainnya pengaturan sambungan penyedia ODBC

Judul kolom: Secara default, diasumsikan bahwa baris pertama sumber data Excel Anda berisi judul kolom, yang dapat digunakan sebagai lapangan nama. Jika hal ini tidak terjadi, Anda harus mengubah ini berangkat, atau pertama Anda baris data "menghilang" untuk digunakan sebagai nama kolom. Hal ini dilakukan dengan menambahkan opsional FirstRowHasNames = pengaturan untuk rangkaian sambungan. Default, yang tidak harus ditentukan, adalah FirstRowHasNames = 1, di mana 1 = True. Jika Anda tidak memiliki judul kolom, Anda perlu menentukan FirstRowHasNames = 0, di mana 0 \U003d false; pengandar nama bidang F1, F2, dan sebagainya. Opsi ini ini tidak tersedia pada kotak dialog konfigurasi DSN.

Namun, karena untuk bug pada pengandar ODBC, menentukan FirstRowHasNames pengaturan saat ini tidak berpengaruh. Dengan kata lain, Excel ODBC driver (MDAC 2,1 dan belakangan) selalu memperlakukan baris pertama dalam data tertentu sumber sebagai nama kolom. Untuk tambahan informationon Kolom menuju bug, klik nomor artikel di bawah ini untuk melihat artikel di Basis Pengetahuan Microsoft:
288343 BUG: Excel ODBC Driver Disregards FirstRowHasNames atau Header pengaturan
Baris Scan: Excel tidak menyediakan ADO dengan skema rinci tentang data berisi informasi, seperti database relasional. Oleh karena itu, pengandar harus memindai melalui setidaknya beberapa baris yang ada data untuk membuat dugaan yang berpendidikan pada jenis data dari setiap kolom. The default untuk "Baris untuk memindai" adalah delapan (8) baris. Anda dapat menentukan nilai integer dari salah satu (1) untuk enam belas (16) baris, atau Anda dapat menentukan nol (0) untuk memindai semua ada baris. Hal ini dilakukan dengan menambahkan opsional MaxScanRows = pengaturan untuk rangkaian sambungan, atau dengan mengubah Baris Scan pengaturan dalam kotak dialog konfigurasi DSN.

Namun, karena untuk bug di pengandar ODBC, menentukan baris untuk memindai (MaxScanRows) pengaturan saat ini tidak berpengaruh. Dengan kata lain, Excel ODBC driver (MDAC 2.1 dan kemudian) selalu memindai baris pertama 8 di sumber data tertentu dalam untuk menentukan setiap kolom datatype.

Untuk informasi tambahan tentang Baris Scan bug, termasuk solusi sederhana, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
189897 Xl97 Revisi teknis: Data dipotong ke 255 karakter dengan Excel ODBC Driver
Pengaturan lain: Jika Anda membangun rangkaian sambungan Anda dengan menggunakan The Data Link properti kotak dialog, Anda mungkin melihat beberapa lainnya Panjang properti pengaturan yang ditambahkan ke rangkaian sambungan yang tidak benar-benar diperlukan, seperti:
... DefaultDir=C:\WorkbookPath;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5;
				
"Collating urutan" pesan kesalahan di Editor Visual Basic

Dalam Visual Basic desain lingkungan dengan Versi MDAC, Anda mungkin melihat kesalahan berikut saat pesan pertama Anda program menyambung ke sumber data Excel saat desain:
Dipilih menyusun urutan tidak didukung oleh sistem operasi.
Pesan ini muncul hanya dalam IDE dan tidak akan muncul dalam dikompilasi Versi program. Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di Basis Pengetahuan Microsoft:
246167 PRB: Collating urutan kesalahan pembukaan ADODB Recordset pertama kalinya melawan Excel XLS

Pertimbangan yang berlaku untuk kedua penyedia DB OLE

Hati-hati tentang jenis Data campuran

Seperti yang dinyatakan sebelumnya, ADO harus menebak pada jenis data untuk setiap kolom di lembar kerja Excel atau kisaran. (Ini tidak terpengaruh oleh Excel sel format pengaturan.) Masalah yang serius dapat muncul jika Anda memiliki nilai-nilai numerik dicampur dengan nilai-nilai teks dalam kolom yang sama. Kedua Jet dan Penyedia ODBC kembali data mayoritas ketik, tapi kembali NULL (kosong) nilai-nilai untuk tipe data minoritas. Jika dua jenis sama dalam campuran kolom, penyedia memilih angka atas teks.

Misalnya:
  • Dalam Anda delapan (8) dipindai baris, jika kolom berisi lima (5) nilai-nilai numerik dan tiga (3) teks nilai, penyedia kembali lima (5) nomor dan tiga (3) nilai null.
  • Dalam Anda delapan (8) dipindai baris, jika kolom berisi tiga (3) nilai numerik dan lima (5) teks nilai, penyedia kembali tiga (3) null nilai-nilai dan lima (5) teks nilai.
  • Dalam Anda delapan (8) dipindai baris, jika kolom berisi empat (4) nilai-nilai numerik dan empat (4) teks nilai, penyedia kembali empat (4) nomor dan empat (4) nilai null.
Sebagai hasilnya, jika Anda kolom berisi nilai-nilai campuran, Anda hanya jalan adalah untuk menyimpan nilai-nilai numerik dalam kolom teks, dan untuk mengubah mereka kembali ke nomor bila diperlukan dalam aplikasi klien dengan menggunakan Visual Basic VAL fungsi atau setara.

Untuk mengatasi masalah ini untuk hanya-baca data, mengaktifkan Impor Mode dengan menggunakan pengaturan "IMEX = 1" di bagian diperpanjang properti dari rangkaian sambungan. Ini memberlakukan ImportMixedTypes = teks pengaturan registri. Namun, perlu diketahui bahwa update mungkin memberikan tak terduga hasil dalam mode ini. Untuk informasi tambahan tentang pengaturan ini, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
194124 PRB: Nilai-nilai Excel kembali sebagai NULL menggunakan DAO OpenRecordset
Anda tidak dapat membuka sandi-dilindungi Workbook

Jika buku kerja Excel yang dilindungi oleh sandi, Anda tidak dapat membukanya untuk mengakses data, bahkan dengan menyediakan sandi yang benar dengan pengaturan sambungan Anda, kecuali jika buku kerja file sudah terbuka di Microsoft Excel aplikasi. Jika Anda mencoba, Anda menerima galat berikut pesan:
Bisa tidak mendekripsi berkas.
Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel dalam Pengetahuan Microsoft Base:
211378 XL2000: "Tidak dapat mendekripsi berkas" Error dengan sandi dilindungi File

Mengambil dan mengedit Data Excel dengan ADO

Bagian ini membahas dua aspek bekerja dengan Excel Anda data:
  • Bagaimana memilih data - dan -

  • Cara mengubah data

Cara memilih Data

Ada beberapa cara untuk memilih data. Kamu bisa:

  • Pilih Excel data dengan kode.
  • Pilih Excel data dengan ADO Data kontrol.
  • Pilih Excel data dengan Data lingkungan perintah.

Pilih Excel Data dengan kode

Excel data dapat terkandung dalam buku kerja Anda di salah satu berikut:

  • Seluruh lembar kerja.
  • Kisaran bernama sel pada lembar kerja.
  • Disebutkan namanya kisaran sel pada lembar kerja.
Menentukan lembar kerja

Untuk menentukan lembar kerja sebagai recordsource Anda, gunakan lembar kerja nama diikuti tanda dolar dan dikelilingi oleh kurung. Untuk contoh:
	strQuery = "SELECT * FROM [Sheet1$]"
				
Anda juga dapat membatasi nama lembar kerja dengan single kutipan miring karakter (') ditemukan pada keyboard di bawah tilde (~). Misalnya:
	strQuery = "SELECT * FROM `Sheet1$`"
				
Microsoft lebih suka kurung, yang berdiri Konvensi untuk nama objek database bermasalah.

Jika Anda menghilangkan keduanya tanda dolar dan tanda kurung, atau hanya tanda dolar, Anda menerima pesan galat berikut:
... Jet database engine tidak dapat menemukan objek tertentu
Jika Anda menggunakan tanda dolar tetapi menghilangkan kurung, Anda akan melihat pesan kesalahan berikut:
Kesalahan sintaks di dari klausa.
Jika Anda mencoba untuk menggunakan tanda kutip tunggal yang biasa, Anda menerima pesan galat berikut:
Kesalahan sintaks dalam permintaan. Permintaan tidak lengkap klausa.
Menentukan kisaran bernama

Untuk menentukan kisaran bernama sel sebagai recordsource Anda, hanya menggunakan nama ditetapkan. Misalnya:
	strQuery = "SELECT * FROM MyRange"
				
Menentukan rentang disebutkan namanya

Untuk menentukan kisaran sel sebagai disebutkan Anda recordsource, menambahkan notasi standar Excel baris/kolom ke ujung lembar nama dalam kurung. Misalnya:
	strQuery = "SELECT * FROM [Sheet1$A1:B10]"
				
Hati-hati tentang menentukan lembar kerja: Penyedia mengasumsikan bahwa Anda tabel data dimulai dengan sebagian besar-atas, kiri, non-kosong sel pada lembar kerja tertentu. Dalam kata lain, tabel data dapat dimulai pada baris 3, kolom c tanpa masalah. Namun, Anda tidak dapat, misalnya, ketik gelar worksheeet di atas dan ke kiri data di sel A1.

Hati-hati tentang menentukan rentang: Ketika Anda menentukan lembar kerja sebagai recordsource Anda, penyedia menambahkan catatan baru di bawah ada catatan di lembar kerja sebagai ruang memungkinkan. Ketika Anda menentukan berbagai (bernama atau disebutkan namanya), Jet juga menambahkan catatan baru di bawah ini ada catatan dalam kisaran sebagai ruang memungkinkan. Namun, jika Anda requery pada kisaran asli, recordset dihasilkan tidak termasuk Catatan baru ditambahkan di luar jangkauan.

Dengan MDAC versi sebelum 2.5, ketika Anda menentukan kisaran bernama, Anda tidak dapat menambahkan catatan baru luar didefinisikan batas jangkauan, atau Anda menerima pesan galat berikut:
Tidak dapat memperluas kisaran bernama.

Pilih Excel Data dengan Data ADO Control

Setelah Anda menentukan pengaturan sambungan data Excel sumber pada General tab ADODC Properti kotak dialog, klik Recordsource tab. Jika Anda memilih CommandType adCmdText, Anda dapat memasukkan Pilih permintaan di Perintah teks kotak dialog dengan sintaks yang dijelaskan sebelumnya. Jika Anda memilih CommandType adCmdTable, dan Anda menggunakan penyedia Jet, drop-down Daftar menampilkan kisaran bernama dan nama lembar kerja yang tersedia dalam buku dipilih kerja, dengan kisaran bernama terdaftar pertama.

Dialog ini kotak benar menambahkan tanda dolar nama lembar kerja, tetapi tidak menambahkan diperlukan kurung. Sebagai hasilnya, jika Anda hanya memilih nama lembar kerja dan klik Oke, Anda menerima pesan galat berikut kemudian:
Kesalahan sintaks di dari klausa.
Anda harus secara manual menambahkan kurung, sekitar nama lembar kerja. (Ini combo box memungkinkan pengeditan.) Jika Anda menggunakan ODBC penyedia, Anda melihat hanya bernama rentang yang tercantum dalam daftar drop-down. Namun, Anda dapat secara manual memasukkan lembar kerja nama dengan delimiters sesuai.

Pilih Excel Data dengan Data lingkungan perintah

Setelah menyiapkan Data lingkungan koneksi untuk Excel Anda data sumber, membuat yang baru Perintah objek. Jika Anda memilih Sumber Data dari Pernyataan SQL, Anda dapat memasukkan permintaan dalam textbox yang menggunakan sintaks yang dijelaskan sebelumnya. Jika Anda memilih Sumber Data dari Database objek, pilih Tabel pertama daftar drop-down, dan Anda menggunakan penyedia Jet, daftar drop-down menampilkan kisaran bernama dan nama-nama lembar kerja yang tersedia dalam buku dipilih kerja, dengan kisaran bernama terdaftar pertama. (Jika Anda memilih lembar kerja nama di lokasi ini, Anda tidak perlu menambahkan kurung di sekitar nama lembar kerja secara manual seperti yang Anda lakukan untuk mengontrol Data ADO.) Jika Anda menggunakan ODBC penyedia, Anda melihat hanya kisaran bernama tercantum dalam drop-down daftar. Namun, Anda dapat secara manual masukkan nama lembar kerja.

Bagaimana perubahan Excel Data: mengedit, menambah dan menghapus

Mengedit

Anda dapat mengedit Excel data dengan metode ADO normal. Recordset bidang yang sesuai dengan sel-sel pada lembar kerja Excel mengandung Excel Formula (mulai dengan "=") read-only dan tidak dapat diedit. Ingat bahwa koneksi ODBC ke Excel ini hanya bisa dibaca secara default, kecuali jika Anda Tentukan jika tidak pada setelan koneksi Anda. Lihat sebelumnya di bawah "menggunakan Microsoft penyedia DB OLE untuk ODBC driver."

Tambahkan

Anda dapat menambahkan catatan untuk Excel recordsource sebagai ruang memungkinkan. Namun, jika Anda menambahkan baru catatan di luar jangkauan Anda awalnya ditentukan, catatan-catatan ini tidak terlihat jika Anda requery pada kisaran asli spesifikasi. Lihat sebelumnya di bawah "perhatian tentang menentukan rentang."

Dalam keadaan tertentu, ketika Anda menggunakan AddNew dan Pemutakhiran metode ADO Recordset mungkin objek untuk menyisipkan baris baru data ke tabel Excel, ADO Masukkan nilai data ke kolom salah dalam Excel. Untuk informasi tambahan, klik artikel nomor di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
314763 FIX: ADO memasukkan Data ke salah kolom dalam Excel
Hapus

Anda lebih dibatasi dalam menghapus Excel Dados daripada data dari sumber data relasional. Dalam database relasional, tidak memiliki "baris" makna atau keberadaan selain "record"; dalam lembar kerja Excel, hal ini tidak benar. Anda dapat menghapus nilai di bidang (sel). Namun, Anda tidak dapat:
  1. Menghapus catatan seluruh sekaligus atau Anda menerima pesan galat berikut:
    Menghapus data pada tabel terkait tidak didukung oleh ISAM ini.
    Anda hanya dapat menghapus catatan oleh blanking isi bidang masing-masing individu.
  2. Menghapus nilai dalam sel yang mengandung Excel formula atau Anda menerima pesan galat berikut:
    Operasi ini tidak diperbolehkan dalam konteks ini.
  3. Anda tidak dapat menghapus spreadsheet kosong row(s) di mana data yang dihapus didirikan, dan recordset Anda akan terus menampilkan kosong Catatan sesuai dengan baris ini kosong.
Hati-hati tentang mengedit data Excel dengan ADO: Ketika Anda memasukkan teks data ke Excel dengan ADO, nilai teks didahului dengan single kutipan. Ini dapat menyebabkan masalah kemudian di bekerja dengan data baru.

Mengambil struktur sumber Data (Metadata) dari Excel

Anda dapat mengambil data tentang struktur Excel data sumber (tabel dan ladang) dengan ADO. Hasil berbeda sedikit antara dua OLE DB penyedia, walaupun keduanya kembali setidaknya sama jumlah kecil berguna bidang informasi. Metadata ini dapat diperoleh dengan OpenSchema metode ADO Sambungan objek, yang mengembalikan ADO Recordset objek. Anda juga dapat menggunakan Data ActiveX Microsoft lebih kuat Objek ekstensi untuk perpustakaan Data definisi bahasa dan keamanan (ADOX) untuk tujuan ini. Dalam kasus sumber data Excel Namun, di mana "meja" adalah lembar kerja atau kisaran bernama, dan "lapangan" adalah salah satu dari sejumlah terbatas datatypes generik, kekuatan tambahan ini tidak berguna.

Query tabel informasi

Berbagai benda yang tersedia di database relasional (tabel, pandangan, disimpan prosedur, dan sebagainya), sumber data Excel memperlihatkan hanya meja setara, terdiri dari lembar kerja dan kisaran bernama didefinisikan di buku kerja yang ditentukan. Kisaran bernama diperlakukan sebagai "Meja" dan lembar kerja diperlakukan sebagai "Sistem meja", dan tidak ada banyak berguna tabel informasi Anda dapat mengambil luar properti ini "table_type". Anda meminta daftar tabel tersedia di buku kerja dengan kode berikut:
Set rs = cn.OpenSchema(adSchemaTables)
				
Penyedia Jet mengembalikan recordset dengan sembilan (9) bidang, yang populates hanya empat (4):

  • table_name
  • table_type ("Meja" atau "Sistem meja")
  • date_created
  • date_modified
Tanggal dua kolom untuk meja tertentu selalu menunjukkan sama nilai, yang tampaknya menjadi "tanggal terakhir." Dengan kata lain, "date_created" ini tidak dapat diandalkan.

Penyedia ODBC juga kembali Recordset dengan sembilan (9) bidang, yang populates hanya tiga (3):

  • table_catalog, folder di mana buku kerja adalah terletak.
  • table_name.
  • table_type, seperti tercantum sebelumnya.
Menurut dokumentasi ADO, dimungkinkan untuk mengambil Daftar lembar kerja hanya, misalnya, dengan menentukan berikut tambahan kriteria untuk OpenSchema metode:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "System Table"))
				
Sayangnya, hal ini tidak bekerja terhadap sumber data Excel dengan MDAC versi kemudian daripada 2.0, menggunakan penyedia baik.

Permintaan bidang informasi

Setiap bidang (kolom) di sumber data Excel adalah salah satu datatypes berikut:

  • numerik (ADO datatype 5, adDouble)
  • mata uang (ADO datatype 6, adCurrency)
  • logis atau boolean (ADO datatype 11, adBoolean)
  • tanggal (ADO datatype 7, adDate, menggunakan Jet; 135, adDBTimestamp, menggunakan ODBC)
  • teks (iklan ADO...Char jenis, seperti 202, adVarChar, 200, adVarWChar atau serupa)
Numeric_precision untuk kolom numerik selalu kembali 15 (yang presisi maksimum di Excel); character_maximum_length teks kolom selalu kembali sebagai 255 (yang lebar maksimum tampilan, tapi tidak panjang maksimum, teks dalam Excel kolom). Tidak ada banyak informasi berguna bidang yang Anda dapat memperoleh luar data_type properti. Anda meminta daftar bidang yang tersedia dalam tabel dengan kode berikut:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, "TableName", Empty))
				
Penyedia Jet mengembalikan recordset yang berisi 28 bidang, yang populates delapan (8) untuk bidang dan sembilan (9) untuk bidang teks. The bidang yang berguna mungkin ini:

  • table_name
  • column_name
  • ordinal_position
  • data_type
Penyedia ODBC mengembalikan recordset mengandung 29 bidang, dari yang populates sepuluh (10) untuk bidang dan 11 untuk bidang teks. The berguna bidang yang sama seperti sebelumnya.

Menghitung tabel dan ladang dan sifat

Kode Visual Basic (seperti contoh berikut) dapat digunakan untuk menghitung meja dan kolom dalam Excel sumber data dan tersedia bidang informasi tentang masing-masing. Ini contoh output hasil untuk suatu Listbox, List1, bentuk yang sama.
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
				

Menggunakan jendela tampilan Data

Jika Anda membuat data link ke sumber data Excel dalam Visual Dasar Data tampilan jendela, jendela Data lihat menampilkan informasi yang sama yang Anda dapat mengambil pemrograman seperti yang dijelaskan sebelumnya. Secara khusus, catatan bahwa penyedia Jet daftar lembar kerja dan kisaran bernama di bawah "Meja" di mana penyedia ODBC menunjukkan hanya bernama rentang. Jika Anda menggunakan ODBC Penyedia dan memiliki tidak didefinisikan apapun kisaran bernama, "Tabel" daftar akan kosong.

Excel keterbatasan

Menggunakan Excel sebagai sumber data terikat oleh internal keterbatasan buku kerja Excel dan lembar kerja. Ini termasuk, tapi tidak terbatas:

  • Lembar kerja ukuran: 65.536 baris oleh 256 kolom
  • Sel isi (teks): karakter 32,767
  • Lembar di buku kerja: dibatasi oleh tersedia memori
  • Nama-nama dalam buku kerja: dibatasi oleh memori yang tersedia

REFERENSI

Untuk informasi tambahan tentang bagaimana menggunakan ADO.NET untuk mengambil dan memodifikasi catatan di buku kerja Excel dengan Visual Basic.NET, klik nomor artikel berikut ini untuk melihat artikel dalam Pengetahuan Microsoft Base:
316934Bagaimana menggunakan ADO.NET untuk mengambil dan memodifikasi catatan di buku kerja Excel dengan Visual Basic.NET
Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
295646 Bagaimana untuk mentransfer Data dari sumber Data ADO ke Excel dengan ADO
246335 Bagaimana untuk mentransfer Data dari ADO Recordset ke Excel dengan otomatisasi
247412 INFO: Metode untuk mentransfer Data ke Excel dari Visual Basic
278973 CONTOH: ExcelADO menunjukkan bagaimana menggunakan ADO untuk membaca dan menulis Data dalam Excel Workbook
318373 Bagaimana untuk mengambil Metadata dari Excel dengan menggunakan metode GetOleDbSchemaTable dalam Visual Basic.NET

Properti

ID Artikel: 257819 - Kajian Terakhir: 21 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic for Applications 6.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
Kata kunci: 
kbhowto kbiisam kbmt KB257819 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:257819

Berikan Masukan

 

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