Excel verileriyle Visual Basic'de veya VBA'DA gelen ADO nasıl kullanılır

Makale çevirileri Makale çevirileri
Makale numarası: 257819 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, ActiveX Data Objects kullanımı anlatılır (ADO) bir veri kaynağı olarak Microsoft Excel elektronik tablolarla. Makaleyi, sözdizimi, sorunlar ve sınırlamalar için Excel'in belirli de vurgular. Bu makalede, OLAP anlatılmamaktadır veya Özet Tablo teknolojileri ya da diğer özel kullanır verileri Excel.

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
303814Visual Basic'de veya VBA'DA alınan Excel verileriyle ADOX nasıl kullanılır

Daha fazla bilgi

Giriş

Satır ve sütunları Microsoft Excel elektronik tablonun satırlarını ve sütunlarını veritabanı tablosunun yakından benzer. Kullanıcılar, Microsoft Excel, bir ilişkisel veritabanı yönetim sistemi olmadığını göz önünde bulundurun ve bu durum getirir sınırlamaları tanı sürece genellikle depolamak ve verileri çözümlemek için Excel ve araçlarını yararlanmak anlamlıdır.

Microsoft ActiveX Data Objects (ingilizce), bir veritabanı gibi bir Excel çalışma kitabını kabul olanak sağlar. Bu makalede, aşağıdaki bölümlerde bunu nasıl anlatılmaktadır: Not: Bu makale ile birlikte Microsoft Data Access Components (MDAC) 2.5 Visual Basic 6.0 Service Pack 3, Microsoft Windows 2000 ve Excel 2000 gerçekleşme için sınama. Bu makalede olmayan kabul veya kullanıcılar, MDAC, Microsoft Windows, Visual Basic'in veya Excel'in farklı sürümleriyle gözlemek davranış farklılıkları tartışın.

ADO ile Excel'e bağlanma

ADO iki OLE birini içeren bir Excel veri dosyasını bağlanabildiği DB sağlayıcıları MDAC yer:
  • Microsoft Jet OLE DB Provider - veya -

  • ODBC sürücüler için Microsoft OLE DB sağlayıcısı

Microsoft Jet OLE DB sağlayıcı nasıl kullanılır?

Jet Sağlayıcısı, bir Excel veri kaynağına bağlanmak için yalnızca iki parça bilgisi gerektirir: dosya adı ve Excel dosya sürümü de dahil olmak üzere bir yol.

Jet Sağlayıcısı kullanılarak bir bağlantı dizesi
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
				
Sağlayıcı sürümü: ıt Jet 4.0 sağlayıcısı kullanmak gereklidir; Jet 3.51 sağlayıcısı Jet ISAM sürücülerini desteklemiyor. Belirttiğiniz, Jet 3.51 sağlayıcısı, çalıştırma sırasında aşağıdaki hata iletisini alırsınız:
Yüklenebilir ISAM bulunamadı.
Excel sürümü: Excel 95 çalışma kitabı Excel 5.0 belirtin (sürüm 7.0, Excel'in) ve Excel 8.0 için Excel 97, Excel 2000 ve Excel 2002 (XP) (sürüm 8.0, 9.0 ve Excel 10.0) çalışma.

Jet Sağlayıcısı veri bağlantısı özellikleri iletişim kutusunu kullanma

Uygulamanızın ADO veri denetimini veya veri ortamı kullanırsanız, gereken bağlantı ayarlarını toplanacak Veri bağlantısı özellikleri iletişim kutusu görüntülenir.
  1. Sağlayıcı) sekmesinde, Jet 4.0 sağlayıcısı seçin; Jet 3.51 sağlayıcısı Jet ISAM sürücülerini desteklemiyor. Jet 3.51 sağlayıcısı belirtirseniz, çalıştırma sırasında aşağıdaki hata iletisini alırsınız:
    Yüklenebilir ISAM bulunamadı.
  2. Bağlantı sekmesinde, çalışma kitabı dosyanızı bulun. Bu Excel bağlantınız için geçerli değildir, çünkü "Kullanıcı KIMLIĞI" ve "Parola" girdileri yoksayın. (Bir parola korumalı bir Excel dosyasını veri kaynağı olarak açamıyor. Var. Bu makalede bu konu hakkında daha fazla bilgi)
  3. Tüm sekmesinde, listeden Extended Properties ' i seçin ve Değeri Düzenle</a1>'ı tıklatın. Excel 8.0; bunu gelen diğer var olan tüm girdileri bir noktalı virgül ile ayırarak girin (;). Bu adımı atlarsanız, bağlantınızı, sınarken aksini belirtmediğiniz sürece, Microsoft Access veritabanı Jet Sağlayıcısı beklediği için bir hata iletisi alırsınız.
  4. Bağlantı sekmesine dönmeniz ve Sınama bağlantısı ' nı tıklatın. Işlemin başarılı olduğunu bildiren bir ileti kutusu göründüğünü unutmayın.
Jet Sağlayıcısı bağlantı ayarları

Sütun başlıkları: varsayılan olarak, Excel veri kaynağınızın ilk satırındaki alan adları olarak kullanılabilir bir sütun başlıkları içerdiğini kabul edilir. Değilse, bu ayarı devre dışı bırakmanız gerekir veya ilk satırdaki veriler "alan adı olarak kullanılacak kayboluyor". Bu isteğe bağlı ekleyerek yapılır HDR =Extended Properties bağlantı dizesi için ayarlama. Belirtilmesi gerekmez, varsayılan değer HDR = Yes. Sütun başlıkları yoksa belirtmek zorunda HDR = No; alanlarınız F1, F2, sağlayıcı adlarını vb.. Genişletilmiş Özellikler dize artık birden çok değer içerdiğinden, çift tırnak içinde kendisini çift tırnak (burada fazladan boşluklar için görsel netlik eklenmiş) aşağıdaki örnekte olduğu gibi hazır bilgi değerleri olarak tekliflerinin ilk kümesi'ni işlemek için Visual Basic bildirmek için ek bir çiftinin artı alınmalıdır.
.ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" & _
"Extended Properties=" " Excel 8.0; HDR=No;" " "
				

ODBC sürücüler için Microsoft OLE DB Provider'ı kullanma

Sağlayıcı ODBC sürücülerini (Bu makale "ODBC Provider" için kısaltma başvurduğu) için de bir Excel veri kaynağına bağlanmak için yalnızca iki (2) bilgi parçalarını gerektirir: sürücü adı, çalışma kitabı yolu ve dosya adı.

ÖNEMLI: Excel'e bir ODBC bağlantısı varsayılan olarak salt okunur özelliklidir. ADO Recordset, LockType özelliği ayarı bu bağlantıyı düzeyi ayarı geçersiz kılmaz. Verilerinizi düzenlemek istiyorsanız, ReadOnlyyanlış bağlantı dizenizde veya DSN yapılandırmanızı ayarlamanız gerekir. Aksi durumda, aşağıdaki hata iletisini alırsınız:
İşlem, güncelleştirilebilir sorgu kullanmalıdır.
Bir DSN-less bağlantı dizesi kullanarak ODBC Provider
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 Provider kullanarak bir bağlantı dizesi DSN ile
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
	.Provider = "MSDASQL"
	.ConnectionString = "DSN=MyExcelDSN;"
	.Open
End With
				
ODBC Provider veri bağlantısı özellikleri</a0> iletişim kutusunu kullanma

Uygulamanızın ADO veri denetimini veya veri ortamı kullanırsanız, gereken bağlantı ayarlarını toplanacak Veri bağlantısı özellikleri iletişim kutusu görüntülenir.
  1. Sağlayıcı) sekmesinde, Microsoft OLE DB Provider for ODBC sürücüleri'ni seçin.
  2. Bağlantı sekmesinde, kullanmak istediğiniz varolan DSN seçin veya bağlantı dizesi kullan ' ı seçin. Gerekli bağlantı ayarlarını toplanacak standart DSN yapılandırması iletişim kutusunu getirir. Önceden de belirttiğimiz gibi isterseniz varsayılan salt okunur ayarı seçimini unutmayın.
  3. Bağlantı sekmesine dönmeniz ve Sınama bağlantısı ' nı tıklatın. Işlemin başarılı olduğunu bildiren bir ileti kutusu göründüğünü unutmayın.
Diğer ODBC Provider bağlantı ayarları

Sütun başlıkları: varsayılan olarak, Excel veri kaynağınızın ilk satırındaki alan adları olarak kullanılabilir sütun başlıkları içerdiğini kabul edilir. Değilse, bu ayarı devre dışı bırakmanız gerekir veya ilk satırdaki veriler "alan adı olarak kullanılacak kayboluyor". Bu isteğe bağlı ekleyerek yapılır FirstRowHasNames = bağlantı dizesi olarak ayarlanıyor. Belirtilmesi gerekmez, varsayılan değer FirstRowHasNames = 1; burada 1 = true. Sütun başlıkları yoksa belirtmek zorunda FirstRowHasNames = 0; burada 0 = false; alanları F1, F2 ve benzeri sürücü adları. Bu seçenek DSN yapılandırması iletişim kutusunda kullanılabilir değil.

Ancak, ODBC sürücüsü bir hata yüzünden, FirstRowHasNames belirten şu anda ayarlamanın hiçbir etkisi. Diğer bir deyişle, Excel ODBC sürücüsü (MDAC 2.1 ve sonrasıyla) her zaman ilk satırda belirtilen veri kaynağı alan adları olarak değerlendirir. Ek informationon için sütun başlığının hata, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
288343Hata: Excel ODBC sürücüsü FirstRowHasNames veya başlığı ayarı Disregards
Taranacak satırlar: ilişkisel bir veritabanında gibi Excel ADO içerdiği ayrıntılı şema bilgileri ile ilgili verileri sağlamaz. Bu nedenle, sürücü her sütunun veri türünü bir educated tahmin yapmak için varolan verileri en az bir kaç satır tarama gerekir. "Satır için tarama" varsayılan değer sekiz (8) satır olur. Bir tamsayı değeri belirttiğiniz bir (1) için on altı (16) satırları, veya (tüm varolan satırları taranacak sıfır 0) belirtebilirsiniz. Bu isteğe bağlı ekleyerek yapılır MaxScanRows = bağlantı dizesi DSN yapılandırması iletişim kutusundaki Rows to Scan ayarını değiştirerek veya ayarlama.

Ancak, ODBC sürücüsü bir hata nedeniyle, satırları (MaxScanRows) tarama belirten şu anda ayarlamanın hiçbir etkisi. Diğer bir deyişle, Excel ODBC sürücüsü (MDAC 2.1 ve sonrasıyla) her zaman ilk 8 satırları belirtilen bir veri kaynağındaki her bir sütunun veri türünü belirlemek için tarar.

Satırları için basit bir geçici çözüm de dahil olmak üzere, tarama hata hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
189897XL97: verileri Excel ODBC sürücüsü ile 255 karakter için kesildi.
Diğer ayarlar: <a0>Veri bağlantısı özellikleri</a0> iletişim kutusunu kullanarak, bağlantı dizesini oluşturmak, kesinlikle gerekli gibi olmayan bağlantı dizesine eklenen bazı diğer Genişletilmiş Özellikler ayarları görebilirsiniz:
... DefaultDir=C:\WorkbookPath;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5;
				
"Collating Sequence" hata iletisi Visual Basic Düzenleyicisi'nde

Belirli bir MDAC sürümleri ile Visual Basic tasarım ortamında programınızı, tasarım zamanında bir Excel veri kaynağına bağlanır aşağıdaki hata iletisini ilk süresini görebilirsiniz:
Işletim sistemi tarafından desteklenen harmanlama sırası seçili.
Bu ileti, yalnızca ıDE'DE görüntülenir ve program derlenmiş sürümünde görünecektir. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
246167SORUN: Sequence hata açılıyor ADODB Recordset'i ilk kez bir Excel XLS karşı Collating...

Hem OLE DB sağlayıcıları için uygulama, dikkat edilmesi gereken noktalar

Bir dikkat karışık veri türleri hakkında

Yukarıda belirtildiği gibi ADO saat veri türü, bir Excel çalışma sayfasını veya aralığını her sütun için tahmin gerekir. (Bu ayarlar biçimlendirme Excel hücre tarafından etkilenmemektedir.) Aynı sütundaki metin değerleri içeren karma sayısal değerler varsa, önemli bir sorun ortaya çıkabilir. Jet ve ODBC Provider hem çoğu, verileri yazın, ancak azınlık veri türü için NULL (boş) değerlere geri dönün. Iki sütundaki eşit karma, sağlayıcı, metnin üzerinde sayısal seçer.

Örneğin,:
  • Beş (5) sayısal değerler ve üç (3) metin değerleri, sütun içeriyorsa, sekiz (8) taranan satır, sağlayıcının sayılar beş (5) ve üç (3) null değerleri döndürür.
  • (3) Üç sayısal değerler ve beş (5) metin değerleri, sütun içeriyorsa, sekiz (8) taranan satır, sağlayıcının (3) üç null değerleri ve beş (5) metin değerleri döndürür.
  • Dört (4) sayısal değerler ve dört (4) metin değerleri, sütun içeriyorsa, sekiz (8) taranan satır, sağlayıcının dört (4) sayılar ve dört (4) null değerleri döndürür.
Sonuç olarak, sütun, karma bir değer içeriyorsa, yalnızca sizin recourse metin olarak, bu sütundaki sayısal değerleri depolamak ve bunlara veya bir eşdeğer bir Visual Basic VAL işlevini kullanarak istemci uygulamasında gerektiğinde geri çevirmek için olur.

Salt okunur verileri bu soruna geçici bir çözüm bulmak için <a0></a0>, Ayarlar'ı kullanarak Alma modunu etkinleştir "IMEX = 1" genişletilmiş özellikler bölümünde, bağlantı dizesi. Bu zorlar ımportmixedtypes Text = kayıt defteri ayarı. Ancak, güncelleştirmelerin bu modda beklenmeyen sonuçlar verebilir unutmayın. Bu ayar hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
194124SORUN: DAO OpenRecordset kullanarak BOş olarak döndürülüyor Excel değerleri
Parola korumalı bir çalışma kitabı açık bağlantı, bir kısmı veya tamamı ingilizce olan içeriğe işaret edebilir.

Excel çalışma kitabı parola ile korunmuşsa, çalışma kitabı dosyası Microsoft Excel'in uygulamada açık değilse bile doğru parolayı bağlantı ayarlarınızla sağlayarak veri erişimi için açılamıyor. Denerseniz, aşağıdaki hata iletisini alırsınız:
Dosyanın şifresi çözülemedi.
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
211378XL2000: Dosya "Not şifresini dosya" hatası ile parola korumalı.

Alma ve Excel verileri ADO ile Düzenle

Bu bölüm, Excel'in çalışma iki yönü anlatılır veri:
  • Verileri seçmek nasıl - ve -

  • Verileri değiştirme

Nasıl yapılır: Veri Seç

Verileri seçmek için çeşitli yollar vardır. Şunları yapabilirsiniz:

  • Excel verilerini kodu seçin.
  • Excel verileriyle, ADO veri denetimini seçin.
  • Veri ortamı, Excel verileriyle seçin komutları.

Excel verilerini Kodu'na sahip seçin.

Excel verilerinizi çalışma kitabınız aşağıdakilerden birinde yer alabilecek:

  • Tüm bir çalışma sayfası.
  • Çalışma sayfasındaki hücre, adlandırılmış bir aralık.
  • Adsız bir çalışma sayfasındaki hücreler aralığı.
Bir çalışma sayfası'nı belirtin

Bir çalışma sayfası, recordsource belirtmek için <a0></a0>, dolar işareti izler ve köşeli ayraçla içinde çalışma sayfasının adını Ek Yardım düğmesini kullanın. Örneğin:
	strQuery = "SELECT * FROM [Sheet1$]"
				
tilde (~) altında klavyede bulunan eğri tek tırnak karakteri (') ile çalışma sayfası adı de sınırlandırabilirsiniz. Örneğin:
	strQuery = "SELECT * FROM `Sheet1$`"
				
Microsoft sorunlu veritabanı nesne adları için konumu kuralı olan köşeli ayraçlar tercih eder.

Dolar işareti ve köşeli ayraçlar veya dolar işaretini yalnızca hem'yi atlarsanız, aşağıdaki hata iletisini alırsınız:
... Jet veritabanı alt yapısı, belirtilen nesne bulunamadı
Dolar işareti kullanın, ancak köşeli ayraçlar atlarsanız, aşağıdaki hata iletisini görürsünüz:
FROM yan tümcesinde sözdizimi hatası.
Sıradan tek tırnaklı'nı kullanmaya çalıştığınızda, aşağıdaki hata iletisini alırsınız:
Sorguda sözdizimi hatası. Tamamlanmamış sorgu yan tümcesi.
Adlandırılmış bir aralık belirtin.

Bilgisayarınızı recordsource adlandırılmış bir hücre aralığı belirtmek için <a0></a0>, tanımlı bir ad kullanın. Örneğin:
	strQuery = "SELECT * FROM MyRange"
				
bir Unnamed aralığı belirtme

Adsız bir hücre aralığı, recordsource belirtmek için <a0></a0>, standart Excel satır/sütun gösterimde sonuna köşeli ayraç içinde sayfa adını ekleyin. Örneğin:
	strQuery = "SELECT * FROM [Sheet1$A1:B10]"
				
çalışma belirtme hakkında BIR uyarı: Belirtilen çalışma - çoğu, sol - üst çoğu, boş olmayan hücre ile başlayan tablonuza veri sağlayıcıyı varsayar. Diğer bir deyişle, tablonuzun veri 3 satır, sütun C sorun olmadan başlayabilir. Ancak, örneğin, üstündeki ve solundaki verileri worksheeet Başlık A1 hücresindeki yazamaz.

Aralıkları belirleme hakkında BIR uyarı: bir çalışma sayfası, recordsource belirttiğiniz zaman alanı sağlar gibi sağlayıcı yeni kayıtlar varolan kayıtların altındaki çalışma ekler. Bir aralık belirttiğiniz (adlandırılmış veya adlandırılmamış) alanı verdiğinden Jet de yeni kayıtlar varolan kayıtların aşağıdaki aralıktaki ekler. Ancak, sonuç kayıt kümesini ve özgün aralığındaki yeniden sorgulamak, izin verilen aralığın dışında yeni eklenen kayıtları içermez.

2.5, Önceki MDAC sürümlerinde adlandırılmış bir aralık belirttiğinizde, yeni bir kayıt aralığı tanımlanmış sınırları ötesine eklenemiyor veya aşağıdaki hata iletisini alırsınız:
Adlandırılmış aralık genişletilemiyor.

ADO veri denetiminin ile Excel verileri seçin.

ADODC Özellikler iletişim kutusunun Genel sekmesindeki Excel'in veri kaynağınız için bağlantı ayarlarını belirttikten sonra RecordSource sekmesinde Değiştir'i tıklatın. Bir adCmdText, CommandType seçerseniz, daha önce açıklanan sözdizimi ile bir SELECT sorgusu Komut metin iletişim kutusuna girebilirsiniz. Bir adCmdTable, CommandType seçin ve Jet Sağlayıcısı'nı kullanıyorsanız, bu a?a?? aç?lan listesinden Adlandırılmış aralıkları ve seçilen çalışma kitabında Adlandırılmış aralıkları ile ilk sırada kullanılabilir çalışma sayfası adlarını görüntüler.

Bu iletişim kutusunun doğru çalışma sayfası adlarını dolar işareti ekler, ancak gerekli köşeli ayraç eklemez. Yalnızca bir çalışma sayfası adı seçin ve Tamam ' ı tıklatın, sonuç olarak, aşağıdaki hata iletisini daha sonra alırsınız:
FROM yan tümcesinde sözdizimi hatası.
Geçici çalışma sayfası adı köşeli ayraçlar el ile eklemeniz gerekir. (Bu bir birleşik giriş kutusu düzenlemeye izin vermiyor.) ODBC sağlayıcı kullanıyorsanız, bu aşağı açılan listesinde yalnızca adlandırılmış aralıkları bakın. Ancak, bir çalışma sayfası adı uygun ayırıcısını el ile girebilirsiniz.

Veri ortamı komutlar ile Excel verileri seçin.

Veri ortamı bağlantısı için Excel ayarlama sonra veri kaynağı, yeni bir Command nesnesi oluştur. SQL deyimi, bir Veri kaynağı'nı seçerseniz, sorgu daha önce açıklanan sözdizimini kullanarak bir metin kutusuna girebilirsiniz. Veritabanı nesnesi, Tablo seçin ilk a?a?? aç?lan listesinden bir Veri kaynağı seçin ve Jet Sağlayıcısı'nı kullanıyorsanız, a?a?? aç?lan listesinden ilk sırada Adlandırılmış aralıkları ile adlandırılmış aralıkları hem de seçili çalışma kitabında kullanılan çalışma sayfası adlarını görüntüler. (Bu konumda bir çalışma sayfası adı'nı seçerseniz, ADO veri denetiminin için olduğu gibi köşeli parantezler içinde çalışma sayfasının adını el ile eklemeniz gerekmez.) ODBC sağlayıcı kullanıyorsanız, bu aşağı açılan listesinde yalnızca adlandırılmış aralıkları bakın. Ancak, bir çalışma sayfası adı el ile girebilirsiniz.

Değiştir Excel'in verileri nasıl: Düzen Ekle ve Sil

Düzenleme

Excel verilerini, normal ADO yöntemleriyle düzenleyebilirsiniz. Excel çalışma sayfası içeren Excel formüllerini ("=" ile başlayan) bir hücreye karşılık gelen bir Recordset alanlar salt okunurdur ve düzenlenemez. Bağlantı ayarlarınızı aksini belirtmediğiniz sürece Excel bir ODBC bağlantısı varsayılan olarak salt okunur olduğunu unutmayın. Daha önce bkz: altındaki "Microsoft OLE DB sağlayıcı ODBC sürücüleri için kullanılıyor."

Ekleme

Alan verdiğinden, kayıtları için Excel recordsource ekleyebilirsiniz. Ancak, özgün olarak belirttiğiniz aralık dışında yeni kayıtlar eklerseniz, bu kayıtlar özgün aralığı belirtimine yeniden sorgulamak için görünür değil. "Aralık belirleme hakkında BIR uyarı." altında daha önce bkz:

Bir Excel tabloya yeni veri satırları eklemek için ADO Recordset nesnesinin AddNew ve Update yöntemleri kullandığınızda, bazı durumlarda, Excel yanlış sütunlara veri değerlerini ADO ekleyebilirsiniz. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
314763Düzeltme: Excel'de, hatalı sütunlar halinde ADO veri ekler
Silme

Excel verilerini farklı veri ilişkisel veri kaynağından silme fazla kısıtlanır. Ilişkisel bir veritabanında hiçbir anlamı veya bulunması dışında "kayıt", "satır" vardır; bir Excel çalışma sayfasında, bu doğru değildir. (Hücre) alanlarındaki değerleri silebilirsiniz. Ancak, yapamazsınız:
  1. Bir kaydın tümünü bir kerede silmek veya aşağıdaki hata iletisini alırsınız:
    Bağlanmış tabloda veri silinmesi bu ISAM tarafından desteklenmiyor.
    Tek tek her alanın içeriğini boşaltılıyor tarafından yalnızca bir kaydı silebilirsiniz.
  2. Bir Excel formülü içeren bir hücredeki değeri silin ya da aşağıdaki hata iletisini alırsınız:
    Işleme bu bağlamda izin verilmez.
  3. Silinen veriler bulunamamıştır ve bu boş satırlara karşılık gelen boş kayıtları görüntülemek, recordset devam edecek boş bir elektronik tablo satırları silemezsiniz.
ADO ile Excel verilerini düzenleme hakkında BIR uyarı: metin verileri ADO ile Excel'e eklediğiniz zaman, metin tek bir teklifle öncesinde. Daha sonra yeni verilerle çalışma bu sorunlara neden olabilirsiniz.

Veri kaynağı yapısı (meta veriler), Excel'den alma

(Tablolar ve alanlar) Excel'in veri kaynağının yapısı ile ilgili verileri ADO ile geri alabilirsiniz. Her ikisi de aynı küçük yararlı bilgi alanları sayısı en az dönmek için ancak sonuçlar aşağıdaki iki OLE DB sağlayıcı arasında biraz farklı olur. Bu meta verileri bir ADO Recordset nesnesini döndüren ADO bağlantı nesnesi, OpenSchema yöntemi ile alınabilir. Bu amaç için daha güçlü Microsoft ActiveX Veri Nesneleri Uzantıları kitaplığı veri tanımlama dili ve güvenlik (ADOX) için de kullanabilirsiniz. Bir Excel veri kaynağını olması durumunda, ancak burada "Tablo" çalışma sayfası veya adlandırılmış aralık ve "field" genel veri türleri, sınırlı sayıda biridir bu ek güç kullanışlı değildir.

Sorgu tablosu bilgileri

Ilişkisel bir veritabanında kullanılabilen çeşitli nesnelerinin (tablolar, görünümler, saklı yordamlar vb.), çalışma sayfalarını ve belirtilen çalışma kitabında tanımlı bir adlandırılmış aralıkları oluşan yalnızca tablo eşdeğerleri, bir Excel veri kaynağını gösterir. Adlandırılmış aralıkları "Tablolar" kabul edilir ve çalışma sayfalarındaki "Sistem tabloları" kabul edilir ve bu "table_type" özelliği alabilirsiniz çok yararlı bir tabloda bilgi yok. Bir çalışma kitabında aşağıdaki kodu içeren kullanılabilir tabloların listesini isteyin:
Set rs = cn.OpenSchema(adSchemaTables)
				
The Jet Sağlayıcısı ile yalnızca doldurur dokuz (9) alanları, bir recordset döndürür dört (4):

  • table_name
  • TABLE_TYPE ("Tablo" veya "System Table")
  • date_created
  • date_modified
Iki tarih alanları belirli bir tablo için aynı değeri "son değişiklik tarihi." olarak görünen her zaman göster Diğer bir deyişle, "date_created" güvenilir değil.

ODBC Provider, ayrıca, yalnızca doldurur (9) dokuz alanları ile bir recordset döndürür üç (3):

  • table_catalog, çalışma kitabının bulunduğu klasörü tıklatın.
  • table_name.
  • table_type daha önce belirtildiği gibi.
ADO belgeleri göre OpenSchema yöntemi için aşağıdaki ek ölçütleri belirterek, yalnızca, çalışma sayfaları listesini almak mümkündür:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "System Table"))
				
ne yazık ki, bu MDAC sürüm 2.0 ya da sağlayıcısını kullanarak, daha sonra bir Excel veri kaynağına karşı çalışmaz.

Sorgu alanı bilgileri

Excel veri kaynağındaki her alan (sütun), aşağıdaki veri türlerini biridir:

  • sayısal (ADO) veri türü 5, adDouble)
  • para birimi (ADO) veri türü 6, adCurrency)
  • mantıksal veya Boole (adBoolean, ADO veri türü 11)
  • (ADO) veri türü 7, Jet kullanan bir adDate; 135, ODBC kullanarak, adDBTimestamp) tarih
  • metin (202, adVarChar, 200, adVarWChar gibi bir ADO ad...Char türü veya benzer)
(Excel en fazla kesinlik olan) 15 olarak her zaman sayısal bir sütunun numeric_precision döndürülür; (Bu, en büyük ekran genişliği ancak olmayan en fazla uzunluğu, bir Excel sütununun metin) 255 olarak her zaman bir <a0>metin</a0> sütununun character_maximum_length döndürülür. Data_type özelliği edinebileceği kadar kullanışlı alan bilgi yok. Aşağıdaki kodu içeren bir tabloda kullanılabilen alanların listesi iste:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, "TableName", Empty))
				
The Jet Sağlayıcısı hangi doldurur, 28 alanları içeren bir recordset döndüren sekiz (8) sayısal alanlar ve dokuz (9) metin alanları için. Yararlı alanları bu etkilenebilir:

  • table_name
  • sütun_adı
  • ORDINAL_POSITION
  • data_type
ODBC Provider hangi doldurur, 29 alanları içeren bir recordset döndüren on (10) sayısal alanlar ve metin alanları için 11. Yararlı alanların önceki gibi aynıdır.

Tablolar ve <a2>alanlar</a2> ve <a4>kendi özellikleri numaralandırılamıyor.

Tablo ve sütunlarda, bir Excel veri kaynağını ve her hakkındaki bilgilerin kullanılabilir alanları numaralandırılamadı, Visual Basic kodu (örneğin, aşağıdaki örnek) kullanılabilir. Bu örnek, aynı form üzerindeki bir liste kutusu, List1, sonuçları verir.
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
				

Veri görünümü pencereyi kullanın.

Veri Görünümü penceresi, Visual Basic için veri görünümü) penceresinde, bir Excel veri kaynağına veri bağlantısı oluşturursanız, programlı olarak daha önce açıklandığı gibi almak aynı bilgileri görüntüler. Özellikle, her iki çalışma Jet Sağlayıcısı listeler ve adlandırılan aralıkları'nın altında "Tablolar", burada ODBC Provider gösterir yalnızca adlandırılmış aralıkları unutmayın. ODBC sağlayıcı kullanıyorsanız ve adlandırılmış bir aralık tanımladığınız, "Tablolar" listesi boş olacaktır.

Excel'in sınırlamaları

Excel veri kaynağı olarak kullanımını, Excel çalışma kitapları ve çalışma sayfaları'nın iç kısıtlamaları tarafından bağlıdır. Bu dahil ancak bunlarla sınırlı değildir:

  • Çalışma sayfası boyutu: 256 sütun 65.536 satır
  • <a1>Içindekiler</a1> (metin) hücre: 32.767 karakter
  • Bir çalışma kitabındaki sayfa: kullanılabilir bellek tarafından sınırlı
  • Bir çalışma kitabındaki adlar: kullanılabilir bellek tarafından sınırlı

Referanslar

ADO.NET, Visual Basic .NET ile Excel çalışma kitabındaki kayıtları almak ve kullanma hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
316934ADO.NET almak için kullanılır ve bir Excel çalışma kitabı Visual Basic .NET ile kayıtlarında Değiştir
Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
295646Nasıl yapılır: veri, ADO veri kaynağı ADO ile Excel'e aktarma
246335Nasıl yapılır: veri, ADO Recordset'ten Otomasyon ile Excel'e aktarma
247412BILGI: verilerini Visual Basic'den Excel'e aktarma yöntemleri
278973Örnek: ExcelADO nasıl okuma ve verileri Excel çalışma kitapları yazma için ADO kullanılacağını gösterir.
318373Visual Basic. NET'te GetOleDbSchemaTable yöntemini kullanarak nasıl alma meta veriler Excel'deki

Özellikler

Makale numarası: 257819 - Last Review: 27 Ocak 2007 Cumartesi - Gözden geçirme: 4.6
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 6.0 Enterprise Edition Service Pack 3
  • Microsoft Visual Basic for Applications 6.0
  • Microsoft ActiveX Data Objects 2.1
  • Microsoft ActiveX Data Objects 2.1 Service Pack 1
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.1 Service Pack 1
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.5
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowto kbiisam KB257819 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:257819

Geri Bildirim Ver

 

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