1
Deel 2
1 Tekenen met data uit Excel
2
Aanpassen
Aanpassen
Deel II 7.1 Inleiding DDE
3
7.1
Inleiding DDE Met behulp van DDE, Dynamic Data Exchange, kunnen commando’s tussen verschillende Windows applicaties worden uitgewisseld. Een typische koppeling is die van AutoCAD met een rekenblad of spreadsheet. In het rekenblad worden bijvoorbeeld berekeningen gemaakt van een ontwerp en met de resultaten wordt de tekening aangepast zonder tussenkomst van de tekenaar. Microsoft Office
Alle programma’s van Microsoft Office kunnen AutoCAD via DDE aansturen met de programmeertaal van Office namelijk Visual Basic for Applications, VBA. Deze programmeertaal zit ingebouwd in Excel, Access en Word.
cliënt-server
DDE is een mechanisme waarbij de ene toepassing communiceert met de andere. Een van de toepassingen start de communicatie en de andere reageert hierop. De toepassing die de communicatie start, heet de DDE cliënt. De toepassing die reageert heet de DDE server. AutoCAD LT kan niet een communicatie starten, maar wel hierop reageren. AutoCAD LT kan dus alleen een server zijn. Tijdens de communicatie voert de cliënt de volgende activiteiten uit: n Verbinding leggen n Informatie overdragen n Verbinding verbreken
Verbinding leggen
Voordat er sprake is van communicatie, moet er een verbinding tussen twee toepassingen gelegd worden. De cliënt zorgt voor de aanmelding aan Windows. De cliënt
4 Deel II
Aanpassen
1 Tekenen met data uit Excel
geeft met een commando aan wie de ontvanger (AutoCAD LT) is en met welk onderdeel van de ontvanger gepraat gaat worden. Dit onderdeel heet de topic. De topic is in het geval van AutoCAD LT de dialoogregel en heet “System”. Kanaalnummer
Windows beperkt de communicatie niet tot slechts één verbinding. Er kunnen meerdere verbindingen tegelijk gemaakt worden. Bijvoorbeeld met meerdere rekenbladen tegelijkertijd. Windows houdt de verbindingen uit elkaar door deze een uniek kanaalnummer te geven. De verbinding wordt gelegd met het commando: KanaalNr=Application.DDEInitiate(“AutoCAD LT.DDE”,"Sy stem”)
U moet dit op één enkele regel schrijven. In plaats van KanaalNummer kunt u natuurlijk iedere andere variabele gebruiken. Het gaat er alleen maar om dat u onthoudt welk kanaal gebruikt wordt voor de communicatie. Let erop dat AutoCAD LT wordt geschreven met een spatie en niet met een punt. Overdragen commando’s
Het uitvoeren van een AutoCAD commando gaat als volgt:
Application.DDEExecute KanaalNummer,"[zzz]" met zzz is een AutoCAD commando bv “[line 0,0 100,100 ]”
Verbinding verbreken
Wanneer alle commando’s zijn gegeven, kan de verbinding worden verbroken, zodat geheugen vrijkomt. Het afsluiten van het kanaal gebeurt met: Application.DDETerminate KanaalNummer Bv Application.DDETerminate 1
Als u weinig tijd heeft, dan kunt u ook het Excel bestand downloaden om deze te bekijken. Activeer de macro´s op Sheet1 om te zien hoe er getekend wordt met Excel.
Aanpassen
Praktijk
Deel II 7.1 Inleiding DDE
5
VBA met Excel In deze paragraaf wordt gebruik gemaakt van Excel (NL). Start AutoCAD. Begin met een lege tekening op basis van millimeters.
Excel
Opslaan
Start Excel. Zorg ervoor dat beide programma’s tegelijk zichtbaar zijn: Met de volgende instructies maakt u namelijk een programma, dat een lijn tekent in AutoCAD. Activeer het commando om het bestand op te slaan.
Tekenen met Excel
Geef het bestand een naam.
Xlsm
Kies voor een bestandstype Xlsm of xls. Dit zijn bestandstypen die macro´s bevatten.
Opslaan Opdracht
Bevestig het opslaan. Activeer het applicatiemenu van Excel en klik op “Opties voor Excel”. Controleer of op het tabblad Populair de instelling “Tabblad Ontwikkelaars weergeven” aan staat.
Ontwikkelaars
Activeer in Excel het tabblad voor de ontwikkelaars.
Visual Basic
Start de editor voor VBA. Het kan wel zijn, dat er verschillende vensters aan staan, dat is afhankelijk van hoe u de laatste keer geëindigd bent. Sluit dan deze vensters.
Beeld Programma code
Activeer het venster van de programmacode. Vergroot het venster van de programmacode. U typt de volgende dik gedrukte tekst. In het vervolg ziet u dik en dun gedrukte tekst. De tekst die dik is gedrukt, dient u in te typen. De tekst die niet dik gedrukt is, staat er al zo dat u weet op welke plaats u de nieuwe tekst moet typen.
Sub MijnEersteMacro() KanaalNr = Application.DDEInitiate("AutoCAD LT.DDE", "System") Call Application.DDEExecute(KanaalNr, "[Line 0,0 100,100 ]") Call Application.DDETerminate(KanaalNr)
2 spaties
End Sub
6 Deel II
Aanpassen
1 Tekenen met data uit Excel
Typ de regels zo nauwkeurig mogelijk over. Tip: Dingen die vaak mis gaan zijn: * Er staan geen spaties tussen line en de coördinaten. * In plaats van het enkele “-teken is tweemaal het ‘-teken gebruikt. * Het woord KanaalNr is niet op alle regels hetzelfde. * Het teken [ is weggelaten. Deze is nodig voor het versturen van commando’s. * Er is geen dubbele spatie gezet tussen 100 en ]. Hierdoor wordt het commando wel overgedragen naar AutoCAD, maar AutoCAD wacht nog tot een spatie of een druk op de Enter-toets wordt gegeven. Tip: Als een regel te lang is, mag u de regel afbreken door eerst een spatie en dan een Underscore, een liggend streepje, te plaatsen. u (F5)
Zet de cursor binnen de macro, dus tussen Sub en End Sub en klik op Sub uitvoeren. U ziet hoe in AutoCAD een lijntje getekend wordt. Als er een foutmelding volgt, probeer de tekst dan opnieuw in te voeren, maar nu wel foutloos. Zie de aanwijzingen voor veel voorkomende fouten. Tip: Door herhaaldelijk op de functietoets F8 te drukken kunt u uw programma regel voor regel doorlopen en testen. Maak de tekening schoon voor de volgende paragraaf en zorg dat er geen commando actief is in AutoCAD.
Overzicht AutoCAD en DDE DDEInitiate
DDEExecute
DDETerminate
In Visual Basic wordt de communicatie gestart met: I = Application.DDEInitiate( “AutoCAD LT.DDE”, “System”) Een opdracht wordt gegeven via Application.DDEExecute I, “[Commando]” waarbij I het kanaalnummer voorstelt. Commando is de tekst die u zou intypen in AutoCAD tussen “[ en ]” bijvoorbeeld “[line 0,0 100,100 ]” (Een spatie betekent in AutoCAD hetzelfde als de Enter-toets) De verbinding wordt verbroken met: Application.DDETerminate I waarbij I het kanaalnummer voorstelt.
Aanpassen
Deel II 7.2 CAD commando’s
7
7.2
CAD commando’s Theorie
U kunt via DDE commando’s geven aan AutoCAD. De invoer die u geeft, moet precies overeenkomen met dat wat AutoCAD verwacht op de commando regel. De commando’s aan AutoCAD worden meestal in kleine overzichtelijke routines geplaatst, zodat u overzicht houdt en u met een kleine wijziging het programma geschikt maakt voor een ander CAD systeem of voor een andere versie van AutoCAD. Hieronder ziet u kort aangegeven wat nodig is voor de basis-tekenfuncties.
Lijn
Voor een lijn dient u minimaal twee punten op te geven.
Cirkel
Voor een cirkel is minimaal het middelpunt en de radius nodig.
Boog
Voor een boog zijn minimaal het middelpunt, de radius, de starthoek en de eindhoek nodig. Meestal worden hoeken in een programmeertaal in radialen weergegeven.
Tekst
Voor tekst zijn minimaal de tekststring, het startpunt en de teksthoogte nodig. Normaal gesproken wordt in AutoCAD de spatie gebruikt als Enter. Als u tekst in moet voeren bij de functies is dat niet het geval. U zult dan een Enter moeten geven met Chr(13). Dit is het ASCII-equivalent van het Enter-teken.
Dialoogboxen
Er zijn ook een groot aantal functies die gebruik maken van dialoogboxen. Omdat u met uw DDE koppeling alleen het
8 Deel II
Aanpassen
1 Tekenen met data uit Excel
commando venster kunt bereiken en niet de dialoogboxen dient u voor de commando’s met de dialoogboxen oplossingen te vinden. Er zijn drie categorieën van oplossingen. De file dialoogbox
Commando’s die met bestandsbeheer te maken hebben zoals New, OPen, SAve, SAVEAS, MENULOAD, IMPORT, EXPORT, MSLIDE, SLIDE, RSCRIPT kunt u veranderen van functies met een dialoogbox naar functies op de commandoregel door de systeemvariabele FILEDIA de waarde 0 te geven. Voor het commando Open kunt u ook Fileopen gebruiken. Wanneer u bij Save, SaveAs of Export over een bestand gaat schrijven tijdens een DDE commando, wordt niet de gebruikelijke waarschuwing gegeven, zodat u vooraf weet welke waarden u moet invullen onafhankelijk van de situatie.
Plot en attribuut
Als de systeemvariabele ATTDIA op nul staat ,dan worden de dialoogbox voor DDINSERT en INSERT vervangen door vragen op de dialoogregels.
dialoogbox Commando’s met en zonder dialoogboxen
Commando’s met een dialoogbox hebben varianten waarbij geen dialoogbox getoond wordt. De variant begint met een - teken. Bijvoorbeeld Plot en -plot.
ARray
-ARray
Group
-Group
Pan
-Pan
XBind
-XBind
ATTdef
-ATTdef
HatchEdit
-HatchEdit
PLOT
-PLOT
XRef
-XRef
ATtEdit
-ATtEdit
HYPERLINK
-HYPERLINK
PLOTSTYLE
-PLOTSTYLE
TEXT
-TEXT
ATTEXT
-ATTEXT
Insert
-Insert
PUrge
-PUrge
BHatch
-BHatch
LAyer
-LAyer
REName
-REName
Block
-Block
LineType
-LineType
STyle
-STyle
BOundary
-BOundary
LWeight
-LWeight
View
-View
COLor
-COLor
MText
-MText
VPORTS
-VPORTS
CUSTOMIZE
-TOolbar
OSnap
-OSnap
Wblock
-Wblock
Systeemvariabelen
Enter toets
Alle systeemvariabelen kunt u instellen door de naam van deze variabele in te typen. Wanneer u een commando geeft in AutoCAD, dan sluit u
Aanpassen
Deel II 7.2 CAD commando’s
9
deze af met de Enter-toets of de spatietoets. Als u tekst invoert, kunt u alleen de Enter-toets gebruiken. Er zou tenslotte een spatie in de tekst kunnen staan. In Visual Basic gebruikt u dan Chr(13) of vbCr. Dit is de ASCII weergave van de Enter-toets. Afbreken van commando’s
Invoer via het toetsenbord is altijd een tekst
Wanneer u een commando wilt afbreken in AutoCAD, dan drukt u eenmaal en bij sommige commando’s tweemaal op de Esc-toets. Het is verstandig om uw programma hiermee te laten beginnen, zodat u vooraf weet dat er geen AutoCAD commando actief is. Het Escape-karakter wordt in Visual Basic weergegeven als Chr(27). DDE draagt alleen teksten over en draagt geen getallen over. Als u een getal wilt invoeren, dient u deze te converteren naar een tekst. Er mag voor deze tekst dan geen spatie komen, omdat AutoCAD de spatie interpreteert als het indrukken van de Enter-toets. Bij de conversiefunctie van Visual Basic worden alle positieve getallen voorafgegaan door een spatie. U zult dus een eigen stringconversie moeten maken.
10 Deel II
Praktijk
Aanpassen
1 Tekenen met data uit Excel
Koppelen U werkt verder met het VBA programma van de vorige paragraaf.
Invoegen Module
Activeer in de VBA editor het pulldownmenu Invoegen en kies voor een nieuwe module.
LT
Verander de naam van de module naar LT.
Globale variabele: Het kanaalnummer komt in meerdere procedures voor. Om ervoor te zorgen dat deze overal bekend is; wordt deze globaal gedefinieerd. Opdracht
Type op de eerste regel van Module LT: De volgende teksten kunt u kopiëren uit [www.cadcollege.com > Instructiefilmpjes > AutoCAD LT > Aanpassen > 1.0] Global KanaalNr As Long
Koppelen: Ieder programma begint met het koppelen aan AutoCAD LT. Opdracht
Type de volgende drie regels in Algemeen om deze koppeling te maken. In het vervolg hoeft u dus slechts het commando Koppelen te geven. Sub Koppelen() KanaalNr=Application.DDEInitiate("AutoCAD LT.DDE","System") End Sub
Ontkoppelen: Ieder programma wordt beëindigd met het ontkoppelen van AutoCAD LT. Opdracht
Type de volgende drie regels in Algemeen om deze ontkoppeling te maken. In het vervolg hoeft u dus slechts het commando Ontkoppelen te geven in plaats van die
Aanpassen
Deel II 7.2 CAD commando’s
11
lange regel in te typen. Sub Ontkoppelen() Call Application.DDETerminate(KanaalNr) End Sub
Er bestaan vier verschillende soorten van invoer voor AutoCAD: functieactivering, getalinvoer, waarde-invoer en tekstinvoer. Door voor ieder van deze functies routines te maken, kunnen we eenvoudig andere functies van hogere orde programmeren. Omdat in deze basisfuncties de conversie van getal naar tekst voorkomt, wordt eerst de nieuwe conversiefunctie gemaakt. Tekst conversie: VBA kan een getal vertalen naar een tekst, maar voegt daar een ongewenste spatie toe. Opdracht
Voeg de volgende regels toe in de module LT. Deze vormen de nieuwe tekst conversiefunctie. De functie converteert een getal naar een tekst met de VBA functie Str en verwijdert daarna de spatie met het commando Trim. Function AcadStr(x) Tdl = Str(x) AcadStr = Trim(Tdl) End Function
Naar AutoCAD Doorsturen: Omdat alle invoerfuncties een tekstregel naar AutoCAD sturen, wordt deze in een procedure gestopt, zodat deze makkelijk is te onderhouden. De tekstregel wordt altijd afgesloten met een spatie of Enter. Omdat de Enter meer algemeen is, wordt deze ook opgenomen in deze procedure. Een Enter-toets is in Visual Basic Chr(13) of vbCr. Rondom de tekstregel zitten de DDE haakjes “[” en “]”. In VBA wordt het teken & gebruikt, om twee teksten aan elkaar te plakken. Er staan altijd spaties rondom &. Opdracht
Voeg nu de volgende regels toe aan de module LT. Sub Invoeren(Commando) Tdl = "[" & Commando & Chr(13) & "]" Call Application.DDEExecute (KanaalNr, Tdl) End Sub
Commando invoer: De volgende procedure activeert een commando. De tekens die overgedragen worden beginnen met twee keer het Esc-teken, chr(27) of chr( vbKeyEsca-
12 Deel II
Aanpassen
1 Tekenen met data uit Excel
pe), om een eventueel actief commando af te breken. Opdracht
Type de volgende regels in. Sub Commando(functie) Call Invoeren (Chr(27) & Chr(27) & functie ) End Sub
GetalInvoer: De volgende procedure voert een getal in. Opdracht
Type de volgende regels in. Sub Waarde(x) Call Invoeren (AcadStr(x)) End Sub
Puntinvoer: De volgende procedure voert een punt in. Een punt bestaat uit twee getallen gescheiden door een komma. De dynamische invoer wordt op de eerste regel uit gezet. Opdracht
Type de volgende regels in. Sub Punt(x, y) Call Invoeren ("´DYNMODE -3") Call Invoeren (AcadStr(x) & "," & AcadStr(y)) End Sub
Als u al de bovenstaande regels heeft ingetypt dan ziet uw programma er als volgt uit. Controleer dit met uw scherm.
Let op: Controleer de code goed. Let op de spelling van alle procedures. Een letter of spatie anders is fataal.
Aanpassen
Praktijk
Deel II 7.2 CAD commando’s
13
Lijn met VBA Voeg de volgende regels toe aan de module LT. Deze vormen een procedure om een lijn te tekenen.
y2
y1 *
2
1
x1
Sub lijn(x1, y1, x2, y2) Call Commando("Line") Call Punt (x1, y1) Call Punt (x2, y2) Call Invoeren ( "" ) End Sub
x2
Ga naar de oorspronkelijke module “Blad1”. Verwijder alle code en type de volgende regels: Sub Cursus Call LT.Koppelen Call LT.Lijn(10, 20, 50, 20) Call LT.Lijn(50, 20, 30, 40) Call LT.Lijn(30, 40, 10, 20) Call LT.Ontkoppelen End Sub
Zet de cursor in de subroutine van Cursus, zodat VB weet welke macro u wilt uitvoeren.
Klik op uitvoeren macro. U gebruikt de functietoets F5 of de button met het pijltje. Als alles goed is gegaan, wordt opnieuw de lijn getekend.
Tip: Als u een fout heeft gemaakt in uw programma dan wordt er geen lijn getekend, maar verschijnt een foutmelding. U heeft dan een typefout gemaakt. Controleer dan de code van deze en van de vorige pagina’s.
14 Deel II
Aanpassen
Praktijk
1 Tekenen met data uit Excel
Cirkel met VBA Voeg de volgende regels toe aan de module LT voor de subroutine om een cirkel te tekenen. U begint onder de laatste regel van de macro lijn.
R
y
*
x
Sub cirkel (x, y, r ) Call Commando("Dragmode off") Call Commando ("Circle") Call Punt (x, y) Call Waarde (r) Call Commando ("Dragmode auto") End Sub
De dragline is in de code hierboven uitgezet, omdat deze alleen werkt met directe invoer op het scherm Voeg de volgende dik gedrukte tekst toe aan de macro Cursus in de module Blad1. Sub Cursus Call LT.Koppelen Call LT.Lijn(10, 20, 50, 20) Call LT.Lijn(50, 20, 30, 40) Call LT.Lijn(30, 40, 10, 20) Call LT.Cirkel(30, 30, 50) Call LT.Cirkel(55, 45, 5) Call LT.Cirkel(5, 45, 5) Call LT.Ontkoppelen End Sub
Zet de cursor in de tekst van Macro Cursus, zodat VB weet welke macro u wilt uitvoeren.
Klik op uitvoeren macro. De volgende tekening ontstaat.
Aanpassen
Deel II 7.2 CAD commando’s
Praktijk
15
Boog met VBA Voeg de volgende tekst toe aan de module LT voor een subroutine om een boog te tekenen. U begint onder de laatste regel van de macro cirkel.
k Hoe
Y
1
X
X1
Sub boog(x, y, x1, y1, hoek) Call Invoeren ("Dragmode off") Call Commando( "Arc") Call Invoeren( "C") Call Punt (x, y) Call Punt (x1, y1) Call Invoeren ("A") Call Waarde (hoek) Call Invoeren ("Dragmode auto") End Sub
Voeg de volgende tekst toe aan de tekst van de macro Cursus in de module Blad1. Sub Cursus Call LT.Koppelen Call LT.Lijn(10, 20, 50, 20) Call LT.Lijn(50, 20, 30, 40) Call LT.Lijn(30, 40, 10, 20) Call LT.Cirkel(30, 30, 50) Call LT.Cirkel(55, 45, 5) Call LT.Cirkel(5, 45, 5) Call LT.Boog(30, 40, 2, 11, 90) Call LT.Ontkoppelen End Sub
Zet de cursor in de tekst van Cursus, zodat VB weet welke macro u wilt uitvoeren.
Klik op uitvoeren macro. De volgende tekening ontstaat.
16 Deel II
Aanpassen
Praktijk
1 Tekenen met data uit Excel
Tekst met VBA Voeg de volgende tekst toe aan de module LT voor een subroutine om tekst te tekenen. U begint onder de laatste regel van de macro boog.
Hoogte
ABC Hoek
y
*
x
0
Sub tekst(x, y, h, Regel) Call Commando ("-TEXT") Call Punt (x, y) Call Waarde (h) Call Waarde (0) Call Invoeren (Regel ) End Sub ‘Einde tekst
Voeg de volgende tekst toe aan de tekst van de macro Cursus in de module Blad1. Sub Cursus Call LT.Koppelen Call LT.Lijn(10, 20, 50, 20) Call LT.Lijn(50, 20, 30, 40) Call LT.Lijn(30, 40, 10, 20) Call LT.Cirkel(30, 30, 50) Call LT.Cirkel(55, 45, 5) Call LT.Cirkel(5, 45, 5) Call LT.Boog(30, 40, 2, 11, 90) Call LT.Tekst(90, 40, 20,"Hallo wereld") Call LT.Ontkoppelen End Sub
Zet de cursor in de tekst van Cursus, zodat VB weet welke macro u wilt uitvoeren.
Klik op uitvoeren macro. De volgende tekening ontstaat .
Aanpassen
Deel II 7.3 Systeemvariabelen
17
7.3
Systeemvariabelen Theorie
De systeemvariabelen zijn variabelen waarin AutoCAD zijn instellingen bewaard. Er worden onder andere systeemvariabelen gebruikt die aangeven wat de huidige kleur is waarin u tekent, wat de huidige lijnsoort is of wat de huidige laag is.
Instellen via de dialoogregel
Instellen met commando’s
De meeste systeemvariabelen zijn direct te wijzigen op de dialoogregel. De werking is eenvoudig. U typt de naam van een systeemvariabele in en vervolgens typt u de nieuwe waarde van de systeemvariabele in. Sommige systeemvariabelen kunnen direct een waarde krijgen. Hiertoe behoort onder andere de systeemvariabele CECOLOR. Deze kunt u ieder moment een waarde geven tussen 0 en 255. Sommige systeemvariabele zoals CELTYPE voor de huidige lijnsoort en CELAYER voor de huidige laag, kunnen alleen een waarde krijgen van een van de lijnsoorten of een van de lagen die in de tekening zijn gedefinieerd. U kunt bijvoorbeeld de lijnsoort HIDDEN niet actief maken als deze niet is gedefinieerd. Het is in dat geval handiger om de commando’s -LINETYPE SET respectievelijk -LAYER SET te gebruiken. Deze commando’s stellen niet alleen de systeemvariabele in, maar laden ook de betreffende lijnsoort of maken de betreffende laag aan.
18 Deel II
Praktijk
Aanpassen
1 Tekenen met data uit Excel
Kleur en lijnsoorten met VBA Voeg de volgende regels toe aan de module LT voor de subroutine om een kleur te kiezen en om de lijnsoort te kiezen. U begint onder de laatste regel van de macro tekst. Sub Kleur(waarde) Call Commando ("CECOLOR") Call Invoeren (waarde) End Sub Sub LijnSoort(waarde) Call Commando ("-LINETYPE") Call Invoeren ("S") Call Invoeren (waarde) Call Invoeren ("") End sub
Voeg de volgende tekst toe de macro Cursus in de module Blad1. Sub Cursus Call LT.Koppelen Call LT.Lijn(10, 20, 50, 20) Call LT.Lijn(50, 20, 30, 40) Call LT.Lijn(30, 40, 10, 20) Call LT.Cirkel(30, 30, 50) Call LT.Cirkel(55, 45, 5) Call LT.Cirkel(5, 45, 5) Call LT.LijnSoort ("HIDDEN" Call LT.Boog(30, 40, 2, 11, 90) Call LT.Kleur (1) Call LT.Tekst(90, 40, 20,"Hallo wereld") Call LT.Ontkoppelen End Sub
Wis eerst de tekening. Zet de cursor in de tekst van Cursus, zodat VB weet welke macro u wilt uitvoeren.
Klik op uitvoeren macro. De volgende tekening ontstaat.
Opdracht
Sla het Excel bestand op. Deze subroutines vormen de basis voor verdere ontwikkelingen. Verwijder de tekening in AutoCAD.
Aanpassen
Deel II 7.4 Rekenblad
19
7.4
Rekenblad Theorie
Tot nu toe is er vanuit gegaan dat er gebruik wordt gemaakt van Visual Basic for Applications. In dit geval is VBA gekoppeld aan Excel. Uit het rekenblad kunnen gegevens gehaald worden, om die voor de tekening te gebruiken.
Excel.application
ActiveWorkbook
ActiveWorksheet
Cells( 1, 1 ) Value Cells( 1, 2 ) Value Cells( ., . ) Value Visible Screenupdating DisplayAlerts
Cells( 2, 1 ) Value
20 Deel II
Praktijk
Aanpassen
1 Tekenen met data uit Excel
Waarden uit Excel met VBA U werkt verder met de bestanden van de vorige paragraaf.
Opdracht
Voeg de volgende regels toe aan de module LT. De tekst is een functie om een waarde uit een veld van Excel te lezen. U begint onder de laatste regel van de macro LijnSoort. Function Veld(i,j) Veld = Application.Worksheets("Blad1").Cells(i,j).Value End Function
Bij de Engelse versie van Excel gebruikt u “Sheet” in plaats van “Blad”. Voeg de volgende subroutine toe aan de module Blad1 Sub Cursus2() Call LT.Koppelen i = 1 Do Call LT.Lijn (Veld(i,1),Veld(i,2),Veld(i,3),Veld(i,4)) i = i + 1 Loop Until Veld(i, 1) = "" Call LT.Ontkoppelen End Sub
Vul het rekenblad “Blad1” in met de waarden uit de volgende afbeelding. Zet de cursor in de procedure Cursus2, zodat VB weet welke macro u wilt uitvoeren.
Klik op uitvoeren macro. De volgende tekening verschijnt: