ADO gebruiken met Excel-gegevens vanuit Visual Basic of VBA

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 257819 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Dit artikel bespreekt het gebruik van ActiveX Data Objects (ADO) met Microsoft Excel-werkbladen als gegevensbron. Het artikel ook markeert de syntaxis van de problemen en beperkingen die specifiek zijn voor Excel. Dit artikel is OLAP niet bespreken of draai tabel technologieën of andere gespecialiseerde gebruikmaakt van Excel gegevens.

Voor extra informatie, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
303814ADOX gebruiken met Excel-gegevens vanuit Visual Basic of VBA

Meer informatie

INLEIDING

De rijen en kolommen van een Microsoft Excel-werkblad nauw lijkt op de rijen en kolommen van een data base tabel. Als gebruikers houden Microsoft Excel is een relationeel data base beheersysteem rekening en de beperkingen die dit feit oplegt herkennen, vaak is het zinvol te houden voordeel van Excel en de hulp programma's voor het opslaan en analyseren van gegevens.

Microsoft ActiveX-gegevensobjecten maakt het mogelijk om een Excel-werkmap te behandelen alsof het een data base. In dit artikel wordt beschreven hoe u kunt dit doen in de volgende secties:OPMERKING: De tests voor dit artikel zijn uitgevoerd met gegevens van Microsoft Access-componenten (MDAC) 2. 5 onder Microsoft Windows 2000 met Visual Basic 6. 0 Servicepack 3 en Excel 2000. In dit artikel niet bevestigen of bespreken verschillen in gedrag die gebruikers kunnen zich met verschillende versies van MDAC, Microsoft Windows, Visual Basic of Excel.

Verbinding maken met Excel met ADO

ADO verbinding kan maken met een gegevensbestand met een van de twee OLE DB-Providers opgenomen in MDAC:
  • Microsoft Jet OLE DB Provider - of -

  • Microsoft OLE DB Provider for ODBC Drivers

Het gebruik van de Microsoft Jet OLE DB-voorziening

De Jet-Provider vereist slechts twee stukjes informatie in volg orde verbinding maken met een Excel-gegevensbron: het pad, inclusief de bestandsnaam en de Excel-bestandsversie.

Jet Provider met behulp van een verbindingsreeks
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
				
Providerversie: Het is nodig om de Provider van Jet 4. 0; het Jet 3. 51-Provider biedt geen ondersteuning voor de Jet-ISAM-stuurprogramma's. Als u de straal opgeeft 3. 51-Provider tijdens runtime die wordt het volgende foutbericht weer gegeven:
Kan installeerbare ISAM niet vinden.
Excel-versie: Excel 5. 0 voor een werkmap van Excel 95 (versie opgeven 7. 0 van Excel) en Excel 8. 0 voor een Excel 97, Excel 2000 of Excel 2002 (XP) werkmap (versie 8. 0, 9. 0 en 10. 0 van Excel).

Jet Provider met behulp van het dialoog venster Data Link-eigenschappen

Als u ADO-gegevensbesturing of de gegevens omgeving in de toepassing, deData Link-eigenschappenin het dialoog venster wordt weer gegeven voor het verzamelen van de benodigde verbinding instellingen.
  1. Op deProvidertab, selecteer de Provider van Jet 4. 0; niet door de Provider voor Jet 3. 51 de Jet-ISAM-stuurprogramma's ondersteunen. Als u de Provider van Jet 3. 51, tijdens runtime opgeven u ontvangt het volgende foutbericht:
    Kan niet vinden installeerbare ISAM-bestand.
  2. Op deVerbindingtabblad, blader naar het werk map bestand. "Gebruikersnaam" negeren en "Wacht woord" posten, omdat deze niet van toepassing op een Excel-verbinding. (U kan een wacht woord beveiligd Excel-bestand als gegevensbron niet openen. Er is meer informatie over dit onderwerp verderop in dit artikel.)
  3. Op deAlletabblad selecterenUitgebreide eigenschappenin de lijst en klik opWaarde bewerken. InvoerenExcel 8. 0;van de bestaande posten met een punt komma worden gescheiden (;). Als u deze stap overslaat, een foutbericht wordt weer gegeven wanneer u test uw verbinding, omdat de Jet-Provider een Microsoft Access-database verwacht, tenzij u opgeeft iets anders.
  4. Terug naar deVerbindingtabblad en klik opVerbinding testen. Let op: een berichtvenster weer gegeven waarin wordt gemeld dat het proces is voltooid.
Andere verbindingsinstellingen van de Jet-Provider

Kolom koppen: Standaard, wordt ervan uitgegaan dat de eerste rij de Excel-gegevensbron bevat kolom koppen die kunnen worden gebruikt als veld namen. Als dit niet het geval is, moet u deze instelling uitschakelen of de eerste inschakelen gegevens rij verdwijnt"" moet worden gebruikt als veldnamen. Dit wordt gedaan door de optioneelHDR =op deUitgebreide eigenschappenvan de verbindingsreeks. De standaard instelling niet hoeft te worden is opgegeven,HDR = Yes. Als u geen kolom koppen, moet u opgevenHDR = No; de provider namen van de velden F1, F2, enzovoort. Omdat deUitgebreide eigenschappenteken nu meerdere waarden bevat, moet tussen dubbele aanhalings tekens zelf, plus een extra paar dubbele aanhalings tekens om Visual De eerste set aanhalings tekens worden behandeld als letterlijke waarden, zoals in de volgende basis in het volgende voorbeeld (waarbij extra spaties zijn toegevoegd voor visuele helderheid).
.ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" & _
"Extended Properties=" " Excel 8.0; HDR=No;" " "
				

Met behulp van Microsoft OLE DB Provider for ODBC Drivers

De provider voor ODBC-stuurprogramma's (die in dit artikel verwijst naar de "ODBC Provider" omwille van de bondigheid) vereist ook stukken slechts twee (2) informatie voor de verbinding met een Excel-gegevensbron: de naam van het stuur programma en de werk map pad en bestands naam.

BELANGRIJK: Excel een ODBC-verbinding is standaard het ken merk alleen-lezen. Uw ADO Record setLockTypeinstelling van de eigenschap heeft deze instelling verbinding niveau niet negeren. U moet instellenAlleen-lezennaarFalsein de verbindingsreeks of als u de DSN-configuratie de gegevens bewerken. Anders wordt het volgende foutbericht weer gegeven:
Bewerking moet een bijwerkbare query gebruiken.
ODBC Provider met behulp van een DSN-loze verbindingsreeks
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 met behulp van een verbindingsreeks met een DSN
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
	.Provider = "MSDASQL"
	.ConnectionString = "DSN=MyExcelDSN;"
	.Open
End With
				
ODBC Provider met behulp van het dialoog venster Data Link-eigenschappen

Als u ADO-gegevensbesturing of de gegevens omgeving in de toepassing, deData Link-eigenschappenin het dialoog venster wordt weer gegeven voor het verzamelen van de benodigde verbinding instellingen.
  1. Op deProvidertabblad selecterenMicrosoft OLE DB Provider for ODBC Drivers.
  2. Op deVerbindingtab, selecteert u de bestaande DSN te gebruiken of kies de gewensteVerbindingsreeks gebruiken. Dit standaard DSN configuratie in het dialoog venster weer gegeven Verzamel de vereiste verbindingsinstellingen. Vergeet niet de standaard uitschakelen alleen-lezen instelling indien gewenst, zoals eerder is vermeld.
  3. Terug naar deVerbindingtabblad en klik opVerbinding testen. Let op: een berichtvenster weer gegeven waarin wordt gemeld dat het proces is voltooid.
Andere ODBC Provider verbindingsinstellingen

Kolom koppen: Standaard, wordt ervan uitgegaan dat de eerste rij de Excel-gegevensbron bevat kolom koppen, kunnen worden gebruikt als veld namen. Als dit niet het geval is, moet u deze instelling uitschakelen of de eerste inschakelen gegevens rij verdwijnt"" moet worden gebruikt als veldnamen. Dit wordt gedaan door de optioneelFirstRowHasNames =de instelling voor de verbindingsreeks. De standaard waarde niet moet worden opgegeven, isFirstRowHasNames = 1, waarbij1 = True. Als u geen kolom koppen, moet u opgevenFirstRowHasNames = 0, waarbij0 = False; het stuur programma de naam van de velden F1, F2, enzovoort. Deze optie is niet beschikbaar in het dialoog venster DSN-configuratie.

Echter, vanwege te een fout in het ODBC-stuurprogramma opgeven van deFirstRowHasNamesmomenteel heeft geen effect. Met andere woorden, de Excel-ODBC stuur programma (MDAC 2. 1 en hoger) behandelt altijd de eerste rij in de opgegeven gegevens bron als veldnamen.Voor meer informatie wilt over de kolomkop bug, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
288343BUG: Excel ODBC-stuurprogramma negeert de FirstRowHasNames of de koptekst instellen
Rijen om te scannen: Excel biedt geen ADO gedetailleerde schema informatie over de gegevens die deze bevat, zoals een relationele data base. Daarom moet het stuur programma doorzocht op ten minste een paar rijen van de bestaande om een schatting goed op het gegevenstype van elke kolom gegevens. Het standaard waarde 'Rijen to Scan' is acht (8) rijen. U kunt een geheel getal opgeven van één (1) tot zestien (16) rijen of nul (0) voor het scannen van alle opgeven bestaande rijen. Dit geschiedt door toevoeging van de optioneleMaxScanRows =om de verbindingsreeks of door deRijen om te scanneninstelling in het dialoog venster DSN-configuratie.

Echter, opgeven welke rijen u wilt scannen (MaxScanRows) door naar een fout in het ODBC-stuurprogramma momenteel heeft geen effect. Met andere woorden, het Excel ODBC-stuurprogramma MDAC ( 2. 1 en hoger) scans altijd de eerste acht rijen in de opgegeven gegevensbron in de volg orde bepalen van de kolom gegevens type.

Voor meer informatie over de rijen te scannen fouten, met inbegrip van een eenvoudige oplossing, klikt u op het artikelnummer hieronder naar het artikel in de Microsoft Knowledge Base:
189897Excel 97: Gegevens afgekapt op 255 tekens met ODBC-stuurprogramma voor Excel
Andere instellingen: Als u de verbindingsreeks met behulp van maken hetData Link-eigenschappenhet dialoog venster ziet u een andereUitgebreide eigenschappeninstellingen die niet absoluut zijn toegevoegd aan de verbindings teken reeks nodig, zoals:
... DefaultDir=C:\WorkbookPath;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5;
				
Foutbericht 'Sorteervolgorde' in de Visual Basic Editor

In de ontwerpomgeving van Visual Basic met bepaalde versies van MDAC, verschijnt mogelijk het volgende fout bericht de eerste keer uw programma verbinding maakt met een Excel-gegevensbron in de ontwerpfase:
Sorteervolgorde niet ondersteund door het besturings systeem wordt geselecteerd.
Dit bericht verschijnt alleen in de IDE en verschijnt niet in de gecompileerde de versie van het programma.Voor Als u meer informatie wilt, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
246167PRB: Reeks fout Opening ADODB record set voor het eerst tegen een Excel XLS sorteren

Overwegingen voor beide OLE DB-Providers

Een waarschuwing over gemengde gegevenstypen

Zoals eerder vermeld, moet ADO schatting van het gegevenstype voor elke kolom in uw Excel-werkblad of bereik. (Dit wordt niet beïnvloed door Cel opmaak instellingen Excel). Een ernstig probleem kan ontstaan als er numerieke waarden worden gecombineerd met tekstwaarden in dezelfde kolom. Zowel de Jet en de ODBC Provider de gegevens van het type van meerderheid, maar retourneert NULL (leeg) waarden voor het gegevenstype van het minderheids belang. Als de twee typen gelijkelijk wordt gemengd de kolom, de provider kiest numerieke over tekst heen.

Bijvoorbeeld:
  • In de acht (8) gescand rijen, als de kolom vijf bevat (5) de numerieke waarden en tekstwaarden drie (3) de provider retourneert vijf (5) getallen en nul waarden drie (3).
  • In de acht (8) gescand rijen, als de kolom bevat drie (3) numerieke waarden en tekstwaarden vijf (5) de provider retourneert drie (3) en vijf (5) tekstwaarden null.
  • In de acht (8) gescand rijen, als de kolom vier bevat (4) de numerieke waarden en tekstwaarden vier (4), retourneert de provider vier (4) nummers en vier (4) null-waarden.
Als gevolg hiervan, als uw kolom gemengde waarden bevat de enige beroep is numerieke waarden in die kolom als tekst opslaan en converteren terug naar getallen als dat nodig is in de clienttoepassing met Visual BasicVALfunctie of een equivalent.

Om dit probleem te omzeilen voor alleen-lezen gegevens inschakelenImport modusmet de instelling "IMEX = 1 ' in de uitgebreide eigenschappen van de verbindingsreeks. Dit dwingt deImportMixedTypes = tekstregisterinstelling. Bedenk dat updates onverwacht kunnen geven resultaten in deze modus.Voor meer informatie over deze instelling, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base te bekijken:
194124PRB: Excel-waarden worden geretourneerd als NULL met OpenRecordset van DAO
U kunt een wacht woord beveiligde werkmap niet openen

Als de Excel-werkmap is beveiligd met een wacht woord, u kan niet openen voor gegevenstoegang, zelfs door het juiste wacht woord opgeven de verbindingsinstellingen, tenzij het werk map bestand is al geopend in de Microsoft Excel-toepassing. Als u probeert, verschijnt het volgende fout bericht:
Kan het bestand niet ontsleutelen.
Voor meer informatie Klik op het volgende artikelnummer om het artikel weer te geven in de Microsoft Knowledge Basis:
211378Excel 2000: Fout "Kan bestand decoderen" met wacht woord beveiligd bestand

Ophalen en bewerken van Excel-gegevens met ADO

In deze sectie worden twee aspecten van het werken met uw Excel gegevens:
  • Het selecteren van gegevens - en -

  • Gegevens wijzigen

Gegevens selecteren

Er zijn verschillende manieren om gegevens te selecteren. U kunt:

  • Excel-gegevens met code selecteren.
  • Excel-gegevens met ADO-gegevensbesturing selecteren.
  • Selecteer de Excel-gegevens met gegevens omgeving opdrachten.

Excel-gegevens met Code selecteren

Excel-gegevens kunnen worden opgenomen in de werkmap in een van de volgende:

  • Een werk blad.
  • Een benoemd bereik van cellen in een werk blad.
  • Een niet benoemde cel ber eik op een werk blad.
Een werk blad opgeven

Een werk blad als de record bron wilt opgeven, gebruikt u de werk blad naam gevolgd door een dollarteken en tussen vierkante haken. Voor in het volgende voorbeeld:
	strQuery = "SELECT * FROM [Sheet1$]"
				
U kunt ook de naam van het werk blad met de schuin enkel aanhalings teken beperken teken (') op het toetsen bord onder de tilde (~). Bijvoorbeeld:
	strQuery = "SELECT * FROM `Sheet1$`"
				
Microsoft geeft de voorkeur aan vierkante haken, die de permanente de conventie voor de beschadigde data base object namen.

Als u beide weglaten het dollarteken en de haken of gewoon het dollarteken, verschijnt de volgende bericht:
... de Jet data base engine het opgegeven object niet gevonden
Als u het dollarteken maar de haakjes weglaten, verschijnt het volgende foutbericht:
FROM-component bevat een syntaxisfout.
Als u te probeert gewone enkele aanhalings tekens gebruikt, wordt het volgende foutbericht weer gegeven:
Query bevat een syntaxisfout. Onvolledige querycomponent.
Een benoemd bereik opgeven

Een benoemd cel ber eik opgeven als de record bron de gedefinieerde naam gewoon gebruiken. Bijvoorbeeld:
	strQuery = "SELECT * FROM MyRange"
				
Een niet-benoemd bereik opgeven

Op een niet-benoemde cel ber eik als uw RecordSource, standaard notatie voor Excel rij/kolom toevoegen aan het einde van het blad de naam tussen vierkante haken. Bijvoorbeeld:
	strQuery = "SELECT * FROM [Sheet1$A1:B10]"
				
Een waarschuwing over werk bladen opgeven: De provider wordt ervan uitgegaan dat de gegevens tabel begint met de bovenste meest, uiterst links, niet-lege cel op het opgegeven werk blad. In andere woorden, de tabel gegevens kunt beginnen in rij 3 kolom c zonder problemen. Echter niet kan u bijvoorbeeld een worksheeet titel boven en links typt de gegevens in cel A1.

Een waarschuwing over het opgeven van bereiken: Wanneer u een werk blad opgeven als de record bron de provider nieuwe records onder bestaande records in het werk blad worden toegevoegd als ruimte toegestaan. Als u een bereik opgeeft (benoemde of niet-benoemde), Jet ook nieuwe records toegevoegd onder de bestaande records in het bereik als ruimte toestaat. Echter, als u QueryOpnieuwUitvoeren op het oorspronkelijke bereik, de resulterende record set omvat niet de toegevoegde records buiten het bereik.

Met MDAC-versies voorafgaand aan 2. 5 wanneer u een benoemd bereik opgeven u kunt nieuwe records toevoegen buiten de definitie van het bereik of het volgende fout bericht:
Kan het benoemde bereik niet uitbreiden.

Excel-gegevens met ADO-gegevensbesturing selecteren

Nadat u de verbindingsinstellingen voor uw Excel-gegevens opgeven bron op deAlgemeentabblad van het ADODCEigenschappenhet dialoog venster, klikt u op deRecord brontabblad. Als u een CommandType van adCmdText kiest, kunt u een Selectiequery in deOpdrachtteksthet dialoog venster met de syntaxis die eerder zijn beschreven. Als u een CommandType adCmdTable en u gebruikt de Jet-Provider, de keuze lijst staan de benoemde bereiken en de voorstellen die beschikbaar zijn in de geselecteerde werkmap met benoemde bereiken als eerste weer gegeven.

In dit dialoog venster vak goed het dollarteken toegevoegd aan werk blad namen, maar voegt niet toe de vierkante haakjes nodig. Als gevolg hiervan, kiest u gewoon de naam van een werk blad en klik opOK, u later verschijnt het volgende foutbericht:
FROM-component bevat een syntaxisfout.
U moet de vierkante haakjes rond de naam van het werk blad handmatig toevoegen. (Deze keuze lijst met invoer vak kan bewerken.) Als u de ODBC Provider gebruikt, ziet u alleen de naam de bereiken die worden vermeld in deze vervolg keuze lijst. U kunt echter handmatig invoeren een de naam van het werk blad met de juiste scheidings tekens.

Excel-gegevens met gegevens omgeving opdrachten selecteren

Na het instellen van de gegevensverbinding voor de omgeving voor uw Excel gegevens bron, maakt een nieuwOpdrachtobject. Als u eenGegevens bronvanSQL-instructie, kunt u een query invoeren in het tekstvak via de syntaxis beschreven eerder. Als u eenGegevens bronvanData base Object, selecteerTabelin de eerste vervolg keuze lijst en u gebruikt de Jet-Provider benoemde bereiken en beschikbaar in werk blad namen worden weer gegeven in de vervolg keuze lijst de geselecteerde werkmap met benoemde bereiken als eerste weer gegeven. (Als u een werk blad naam op deze locatie niet hoeft toe te voegen vierkante haken de naam van het werk blad als u handmatig doen voor ADO-gegevensbesturing.) Als u de ODBC Provider gebruikt, ziet u alleen benoemde bereiken in deze vervolg keuze lijst lijst. U kunt de naam van een werk blad echter handmatig invoeren.

Hoe wijzigen-Excel-gegevens: bewerken, toevoegen en verwijderen

Bewerken

U kunt Excel-gegevens bewerken met de standaard ADO-methoden. Record set velden die overeenkomen met de cellen in de Excel werk blad met Excel-formules (beginnend met '=') zijn alleen-lezen en kunnen niet worden bewerkt. Vergeet niet dat een ODBC-verbinding naar Excel standaard het ken merk alleen-lezen tenzij u anders in uw verbindingsinstellingen opgeven. Zie eerder onder "werken met de Microsoft OLE DB Provider for ODBC Drivers. '

Toevoegen

U kunt records toevoegen aan uw Excel recordsource ruimte toegestaan. Echter, als u nieuwe records buiten het bereik dat u oorspronkelijk opgegeven, zijn deze records niet zichtbaar als u opnieuw op het oorspronkelijke bereik specificatie. Zie eerder onder "Een waarschuwing over het opgeven van bereiken."

In bepaalde omstandigheden, wanneer u deAddNewenUpdatemethoden van ADORecord setinvoegen van nieuwe rijen gegevens in een Excel-tabel, ADO-object mogelijk Plaats de gegevens waarden in de verkeerde kolommen in Excel.Klik op het artikel voor meer informatie volgende nummer het artikel in de Microsoft Knowledge Base:
314763FIX: ADO voegt de gegevens in de verkeerde kolommen in Excel
Verwijderen

U beperkt zijn meer gegevens dan Excel verwijderen gegevens uit een relationele gegevensbron. In een relationele data base heeft "rij" geen betekenis of bestaan, afgezien van de "record"; in een Excel-werkblad is dit niet True. U kunt waarden in velden (cellen) verwijderen. Echter, kunt u niet:
  1. Een hele record tegelijk verwijderen of u ontvangt de volgende bericht:
    Gegevens in een gekoppelde tabel verwijderen wordt niet ondersteund door deze ISAM.
    U kunt alleen een record verwijderen de inhoud van elk afzonderlijk veld blanco.
  2. Verwijder de waarde in een cel met een Excel-formule of u ontvangt het volgende foutbericht:
    Bewerking is niet in deze context is toegestaan.
  3. U kunt de lege werk blad rij of rijen die niet verwijderen het verwijderde gegevens gevonden en de record set blijft leeg worden weer gegeven records die overeenkomen met deze lege rijen.
Een waarschuwing over het bewerken van Excel-gegevens met ADO: Wanneer u tekstgegevens invoegen in Excel met ADO, de tekstwaarde die wordt voorafgegaan door een enkel aanhalings teken. Dit kan problemen veroorzaken later in werken met de nieuwe gegevens.

Structuur van de bron gegevens (metagegevens) ophalen uit Excel

U kunt gegevens over de structuur van uw Excel-gegevens ophalen bron (tabellen en velden) met ADO. Resultaten verschillen enigszins tussen de twee OLE DB-Providers, hoewel beide ten minste hetzelfde kleine aantal nuttige keren gegevens velden. Deze metagegevens kan worden opgehaald met deOpenSchemamethode van ADOVerbindingobject, een ADO retourneertRecord setobject. U kunt ook de krachtige Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX) bibliotheek Dit doel. In het geval van een Excel-gegevensbron waar "tabel" is echter een werk blad of benoemd bereik en een "veld" is een van een beperkt aantal van algemene gegevens typen is deze extra energie niet nuttig.

Tabel gegevens opvragen

Van de verschillende objecten die beschikbaar zijn in een relationele data base (tabellen, weergaven, opgeslagen procedures, enzovoort), een Excel-gegevensbron beschrijft Alleen tabel equivalenten, die bestaat uit de werk bladen en benoemde bereiken gedefinieerd in de opgegeven werkmap. Benoemde bereiken worden behandeld als "Tabellen" en werk bladen worden beschouwd als "systeemtabellen" en er is veel handige tabel gegevens die kunnen worden opgehaald dan deze eigenschap "table_type". U vraagt een lijst met beschikbare tabellen in de werkmap met de volgende code:
Set rs = cn.OpenSchema(adSchemaTables)
				
Een record set met negen (9) velden, die zij van retourneert de Jet-Provider vult alleen vier (4):

  • TABLE_NAME
  • TABLE_TYPE ("Tabel" of "Systeem tabel")
  • Date_Created
  • date_modified
De twee datum velden voor een bepaalde tabel altijd weer geven dezelfde waarde die wordt weer gegeven als de "datum laatst gewijzigd." Met andere woorden, 'date_created' is niet betrouwbaar.

De ODBC Provider retourneert ook een record set met negen (9) velden, die wordt gevuld slechts drie (3):

  • TABLE_CATALOG, de map waarin de werkmap is zich bevindt.
  • TABLE_NAME.
  • TABLE_TYPE, zoals eerder is opgemerkt.
Volgens is de ADO-documentatie, het mogelijk om op te halen een lijst met werk bladen, bijvoorbeeld door de volgende aanvullende vermelding alleen criteria voor deOpenSchemamethode:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "System Table"))
				
Helaas, dit werkt niet op een Excel-gegevensbron met Uiterlijk op 2. 0 met behulp van een provider voor MDAC-versies.

Veld gegevens opvragen

Elk veld (kolom) in een Excel-gegevensbron is een van de de volgende gegevens typen:

  • Numeriek (ADO-gegevenstype 5, adDouble)
  • valuta (ADO-gegevenstype 6, adCurrency)
  • logische of boolean (ADO-gegevenstype 11, adBoolean)
  • datum (ADO-gegevenstype 7, adDate, gebruik maakt van Jet, 135 adDBTimestamp, met behulp van ODBC)
  • tekst (een ADO-ad...Type, zoals 202, adVarChar, 200, char adVarWChar of vergelijkbaar)
De numeric_precision voor een numerieke kolom wordt altijd geretourneerd. 15 (dit is de maximale precisie in Excel); de character_maximum_length een tekst kolom altijd geretourneerd als 255 (dit is de maximale scherm breedte maar niet de maximale lengte van tekst in een Excel-kolom). Er is niet veel nuttige informatie die u buiten krijgen kunt dedata_typeeigenschap. Aanvraag van een lijst met beschikbare velden in een tabel met de volgende code:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, "TableName", Empty))
				
Een record set met 28 velden waarvan retourneert de Jet-Provider wordt gevuld acht (8) voor numerieke velden en negen (9) voor tekstvelden. Het nuttige velden zijn waarschijnlijk deze:

  • TABLE_NAME
  • COLUMN_NAME
  • ORDINAL_POSITION
  • data_type
De ODBC Provider retourneert met 29 velden van de record set die wordt gevuld tien (10) voor numerieke velden en 11 voor tekstvelden. Het nuttige velden zijn hetzelfde als eerder.

Tabellen en velden en hun eigenschappen opsommen

Visual Basic-code (zoals in het volgende voorbeeld) kan worden gebruikt om de tabellen en kolommen in een Excel-gegevensbron en de beschikbare opsommen velden met informatie over elk. In dit voorbeeld voert de resultaten aan een keuze lijst List1 gepubliceerd op hetzelfde formulier.
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
				

Gebruik het venster gegevens weer geven

Als u een gegevenskoppeling naar een Excel-gegevensbron in de Visual maken Basis gegevensweergave venster de gegevensweergave venster geeft dezelfde informatie die u kunt ophalen via programmering zoals eerder is beschreven. Let vooral op dat de Jet-Provider werk bladen en benoemde bereiken onder "Tabellen bevat" waar de ODBC Provider bevat alleen benoemde bereiken. Als u de ODBC-stuurprogramma Provider en zijn niet gedefinieerd benoemde bereiken, de lijst "Tabellen" zal zijn leeg.

Beperkingen van Excel

Het gebruik van Excel als gegevensbron wordt gebonden door de interne beperkingen van Excel-werkmappen en -werk bladen. Deze omvatten maar zijn niet beperkt tot:

  • Werk blad formaat: 65536 rijen bij 256 kolommen
  • Cel inhoud (tekst): 32767 tekens
  • Werk bladen in een werkmap: beperkt door de beschikbare geheugen
  • Namen in een werkmap: beperkt door het beschikbare geheugen

Referenties

Voor meer informatie over het gebruik van ADO.NET-naar- ophalen en wijzigen van records in een Excel-werkmap met Visual Basic.Net werk, klikt u op het volgende artikelnummer om het artikel weer te geven in de Microsoft Knowledge Basis:
316934Het gebruik van ADO.NET wilt ophalen en wijzigen van Records in een Excel-werkmap met Visual Basic.NETTO
Voor meer informatie klikt u op de artikel nummers hieronder om de artikelen worden weer gegeven in de Microsoft Knowledge Base:
295646Het ADO-gegevensbron gegevens overbrengen naar Excel met ADO
246335Het ADO-Recordset gegevens overbrengen naar Excel automatisering
247412INFO: Methoden voor het overdragen van gegevens naar Excel vanuit Visual Basic
278973Voorbeeld: ExcelADO laat zien hoe u ADO gebruiken voor het lezen en schrijven van gegevens in Excel-werkmappen
318373Informatie over metagegevens ophalen uit Excel met behulp van de methode GetOleDbSchemaTable in Visual Basic.NETTO

Eigenschappen

Artikel ID: 257819 - Laatste beoordeling: zaterdag 17 september 2011 - Wijziging: 3.0
De informatie in dit artikel is van toepassing op:
  • 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
Trefwoorden: 
kbhowto kbiisam kbmt KB257819 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:257819

Geef ons feedback

 

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