ExcelADO laat zien hoe u ADO kunt gebruiken voor het lezen en schrijven van gegevens in en naar Excel-werkmappen

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

Samenvatting

In het voorbeeld van ExcelADO.exe ziet u hoe u ActiveX Data Objects (ADO) met Microsoft Jet OLE DB 4.0 Provider kunt gebruiken om gegevens in Microsoft Excel-werkmappen te lezen en te schrijven.

Meer informatie

U kunt het volgende bestand downloaden van het Microsoft Downloadcentrum:
ExcelADO.exe
Releasedatum: 12 december 2000

Als u meer informatie wilt over het downloaden van Microsoft-ondersteuningsbestanden, klikt u op het volgende artikelnummer in de Microsoft Knowledge Base:
119591Microsoft-ondersteuningsbestanden via onlineservices downloaden
Microsoft heeft dit bestand op virussen gecontroleerd. Hiervoor is de meest actuele software voor virusdetectie gebruikt die beschikbaar was op de datum dat het bestand werd gepubliceerd. Het bestand is ondergebracht op beveiligde servers die onbevoegde wijzigingen aan het bestand helpen verhinderen.

Voordelen van ADO

Door gebruik te maken van ADO voor het overdragen of het ophalen van gegevens uit een Excel-werkmap beschikt u als ontwikkelaar over een aantal voordelen in vergelijking met Excel-automatisering:
  • Prestaties. Microsoft Excel is een out-of-process-ActiveX-server. ADO wordt tijdens processen uitgevoerd, zodat de overhead van kostbare out-of-process-aanroepen wegvalt.
  • Schaalbaarheid. Voor webtoepassingen is het niet altijd wenselijk Microsoft Excel-automatisering toe te passen. ADO biedt u een meer schaalbare oplossing voor de verwerking van gegevens in een werkmap.
ADO kan uitsluitend worden gebruikt voor de overdracht van onbewerkte gegevens naar een werkmap. U kunt ADO niet gebruiken om opmaak of formules op cellen toe te passen. U kunt echter wel gegevens overbrengen naar een werkmap die al is opgemaakt, waarbij de opmaak behouden blijft. Als u 'voorwaardelijke' opmaak nodig hebt nadat de gegevens zijn ingevoegd, kunt u deze instellen via Automatisering of met een macro in de werkmap.

Jet OLE DB Provider-specifieke informatie voor Excel-werkmappen

De database-engine Microsoft Jet kan worden gebruikt om toegang te krijgen tot gegevens in andere databasebestandsindelingen, zoals Excel-werkmappen, via installeerbare ISAM-stuurprogramma's (Indexed Sequential Access Method). Om externe indelingen te kunnen openen die door Microsoft Jet 4.0 OLE DB Provider worden ondersteund, geeft u het databasetype op in de uitgebreide eigenschappen voor de verbinding. De Jet OLE DB Provider biedt ondersteuning voor de volgende databasetypen voor Microsoft Excel-werkmappen:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
Opmerking Gebruik het Excel 5.0-brondatabasetype voor Microsoft Excel 5.0- en 7.0-werkmappen (95) en gebruik het Excel 8.0-brondatabasetype voor Microsoft Excel 8.0- (97) en 9.0-werkmappen (2000). In het ExcelADO.exe-voorbeeld worden Excel-werkmappen in de Excel 97- en Excel 2000-indeling gebruikt.

In de volgende voorbeelden wordt een ADO-verbinding met een Excel 97-werkmap (of 2000) gedemonstreerd:
Dim oConn As New ADODB.Connection
With oConn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open "C:\Map1.xls"
    '....
    .Close
End With
				
     -of-
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\Map1.xls;" & _
           "Extended Properties=""Excel 8.0;"""
oConn.Close
				
Naamgevingsconventies voor tabellen

U kunt op verschillende manieren naar een tabel (of bereik) in een Excel-werkmap verwijzen:
  • Gebruik de naam van het blad gevolgd door een dollarteken (bijvoorbeeld [Blad1$] of [Mijn werkblad$]). Een werkmaptabel waarnaar op deze manier wordt verwezen, bestaat uit het volledig gebruikte bereik van het werkblad.
    oRS.Open "Selecteer * uit [Blad1$]", oConn, adOpenStatic
    					
  • Gebruik een bereik met een gedefinieerde naam (bijvoorbeeld [Tabel1]).
    oRS.Open "Selecteer * uit Tabel1", oConn, adOpenStatic
    					
  • Gebruik een bereik met een specifiek adres (bijvoorbeeld [Blad1$A1:B10]).
    oRS.Open "Selecteer * uit [Blad1$A1:B10]", oConn, adOpenStatic
    					
Tabelkoppen

Bij Excel-werkmappen wordt de eerste rij van een bereik standaard als koprij (of veldnamen) beschouwd. Als het eerste bereik geen koppen bevat, kunt u HDR=NO in de uitgebreide eigenschappen in de verbindingsreeks opgeven. Als de eerste rij geen koppen bevat, wijst de OLE DB Provider automatisch namen aan de velden toe (waarbij F1 voor het eerste veld staat, F2 voor het tweede veld, enzovoort).

Gegevenstypen

In tegenstelling tot een traditionele database bestaat er geen rechtstreekse manier om de gegevenstypen voor kolommen in Excel-tabellen op te geven. In plaats daarvan doorzoekt de OLE DB Provider een beperkt aantal rijen van een kolom om te 'raden' wat het gegevenstype voor het veld is. Standaard worden er acht (8) rijen doorzocht. U kunt het aantal rijen dat wordt doorzocht, wijzigen door een waarde tussen één (1) en zestien (16) voor de instelling MAXSCANROWS in de uitgebreide eigenschappen van de verbindingsreeks op te geven.

Bestanden die in het voorbeeld zijn opgenomen

Het bestand ExcelADO.exe bevat een Visual Basic Standard EXE-project, Active Server Pages (ASP), Excel 97- en Excel 2000-werkmappen die fungeren als sjablonen, en een Microsoft Access 2000-database. Dit zijn de opgenomen bestanden:

Visual Basic Standard EXE-projectbestanden
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Active Server Pages
  • EmpData.asp
  • Orders.asp
Microsoft Excel-werkmappen
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Microsoft Access-database
  • Data.mdb

Gebruik van het voorbeeld

Pak de inhoud van het EXE-bestand uit in een map.

Het Visual Basic-project gebruiken:
  1. Open het bestand ExcelADO.vbp in Visual Basic.
  2. Open het menu Project, selecteer References en stel vervolgens verwijzingen naar Microsoft ADO Ext. for DDL and Security en Microsoft ActiveX Data Objects Library in. Deze voorbeeldcode werkt zowel met ADO 2.5 als ADO 2.6. Selecteer de juiste versie voor uw computer.
  3. Druk op F5 om het programma uit te voeren. Er wordt een formulier voor de demo weergegeven.
  4. Klik op Sample 1. In dit voorbeeld wordt een kopie van OrdersTemplate.xls gemaakt. Vervolgens wordt ADO gebruikt om verbinding met de werkmap te maken en wordt een recordset geopend voor een tabel die een gedefinieerd bereik in de werkmap vormt. De naam van het bereik is Orders_Table. De ADO-methoden AddNew/Update worden gebruikt om records (of rijen) toe te voegen aan het gedefinieerde bereik in de werkmap. Wanneer de rijen zijn toegevoegd, wordt de ADO-verbinding verbroken en wordt de werkmap weergegeven in Microsoft Excel. Volg hiertoe de volgende stappen:
    1. Open het menu Invoegen in Excel, selecteer Namen en selecteer vervolgens Definiëren.
    2. Selecteer Orders_Table in de lijst met gedefinieerde namen. De gedefinieerde naam omvat nu ook de zojuist toegevoegde records. De gedefinieerde naam wordt in combinatie met de Excel-functie VERSCHUIVING gebruikt om een totaal te berekenen voor de gegevens die aan het werkblad zijn toegevoegd.
    3. Sluit Microsoft Excel af en keer terug naar de Visual Basic-toepassing.
  5. Klik op Sample 2. In dit voorbeeld wordt een kopie van EmpDataTemplate.xls gemaakt. ADO wordt gebruikt om verbinding met de werkmap te maken en de methode Execute van de ADO-verbinding wordt gebruikt om gegevens in te voegen (INSERT INTO in SQL) in de werkmap. Gegevens worden toegevoegd aan gedefinieerde bereiken (of tabellen) in de werkmap. Wanneer de gegevens zijn overgebracht, wordt de verbinding gesloten en wordt de resulterende werkmap in Excel weergegeven. Nadat u de werkmap hebt bekeken, sluit u Microsoft Excel af en keert u terug naar de Visual Basic-toepassing.

  6. Klik op Sample 3. In dit voorbeeld wordt een kopie van ProductsTemplate.xls gemaakt. Microsoft ADO Extensions 2.1 for DDL and Security object library (ADOX) wordt gebruikt om een nieuwe tabel (of een nieuw werkblad) aan de werkmap toe te voegen. Vervolgens wordt een ADO-recordset voor de nieuwe tabel opgehaald en worden gegevens toegevoegd via de methode AddNew/Update. Wanneer de rijen zijn toegevoegd, wordt de ADO-verbinding verbroken en wordt de werkmap weergegeven in Excel. De werkmap bevat VBA-macrocode (Visual Basic for Applications) in de gebeurtenis Openen voor de werkmap. De macro wordt uitgevoerd wanneer de werkmap wordt geopend. Als het nieuwe werkblad 'Producten' in de werkmap bestaat, wordt het werkblad door de macrocode opgemaakt, waarna de macrocode wordt verwijderd. Via deze techniek kan de webontwikkelaar opmaakcode weghouden van de webserver en op de client bewaren. Een webtoepassing kan een opgemaakte werkmap als gegevensstroom naar de client verzenden en macrocode toestaan waarmee eventuele 'voorwaardelijke' opmaak kan worden toegepast, wat niet mogelijk zou zijn in een sjabloon die op de client wordt uitgevoerd.

    Opmerking Als u de macrocode wilt bekijken, geeft u de module ThisWorkbook in het VBA-project voor ProductsTemplate.xls weer.

  7. Klik op Sample 4. Dit voorbeeld levert dezelfde resultaten op als Sample 1, maar er wordt een enigszins andere techniek voor de overdracht van de gegevens gebruikt. In Sample 1 worden records (of rijen) één voor één aan het werkblad toegevoegd. In Sample 4 worden de records allemaal tegelijk toegevoegd, door de Excel-tabel aan een Access-database te koppelen en een toevoegquery (of INSERT INTO..SELECT FROM) uit te voeren om records uit een tabel in de Access-database aan de Excel-tabel toe te voegen. Als de overdracht eenmaal is voltooid, wordt de Excel-tabel ontkoppeld van de Access-database en wordt de resulterende werkmap in Excel weergegeven. Sluit Microsoft Excel af en keer terug naar de Visual Basic-toepassing.

  8. In het laatste voorbeeld ziet u hoe u gegevens uit een Excel-werkmap kunt lezen. Selecteer een tabel in de vervolgkeuzelijst en klik vervolgens op Sample 5. In het venster Direct wordt de inhoud van de geselecteerde tabel weergegeven. Als u een volledig werkblad ('Blad1$' of 'Blad2$') voor de tabel selecteert, wordt in het venster Direct de inhoud van het gebruikte bereik voor dat werkblad weergegeven. Het gebruikte bereik hoeft niet per se met rij 1, kolom 1 van het werkblad te beginnen. Het gebruikte bereik begint met de cel linksboven in het werkblad dat gegevens bevat.

    Als u een specifiek bereikadres of een gedefinieerd bereik selecteert, wordt in het venster Direct alleen de inhoud van dat bereik in het werkblad weergegeven.
Active Server Pages (ASP) gebruiken:
  1. Maak een nieuwe map met de naam ExcelADO in de basismap van uw webserver. Het standaardpad voor de basismap is C:\InetPut\WWWRoot.
  2. Kopieer de volgende bestanden naar de map die u in de vorige stap hebt gemaakt:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. De ASP-scripts in dit voorbeeld maken kopieën van de werkmapsjablonen met de methode Copy van FileSystemObject. De methode Copy slaagt alleen als de client die het script aanroept, schrijftoegang heeft tot de map die de ASP bevat.
  4. Ga naar Orders.asp (http://YourServer/ExcelADO/Orders.ASP). U ziet dat in de browser een Excel-werkmap wordt weergegeven die lijkt op de werkmap in Sample 1 van de Visual Basic-toepassing.
  5. Ga naar EmpData.asp (http://YourServer/ExcelADO/EmpData.ASP). U ziet dat in de browser een Excel-werkmap wordt weergegeven die lijkt op de werkmap in Sample 2 van de Visual Basic-toepassing.
(c) Microsoft Corporation 2000. Alle rechten voorbehouden. Bijdragen: Lori B. Turner, Microsoft Corporation.

Referenties

Voor meer informatie klikt u op de volgende artikelnummers in de Microsoft Knowledge Base:
195951Procedure: Query op Excel-gegevens uitvoeren en gegevens bijwerken met ADO uit ASP
194124PRB: Excel-waarden worden als NULL geretourneerd met OpenRecordset van DAO
193998Procedure: Binaire gegevens in ASP lezen en weergeven
247412INFO: Methoden voor het overdragen van gegevens naar Excel vanuit Visual Basic
257819Procedure: ADO gebruiken met Excel-gegevens afkomstig uit Visual Basic of VBA

Eigenschappen

Artikel ID: 278973 - Laatste beoordeling: dinsdag 12 juni 2007 - Wijziging: 6.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Active Server Pages 4.0
Trefwoorden: 
kbdownload kbdownload kbautomation kbfile kbprogramming KB278973

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