Inhoudsopgave
-Voorwoord
-Access Cursus Hoofdstuk 21
-Toch een downloadverbod?
-Een pleister op de zere wonde
-Helpmij.nl prijsvraag februari. Met een prachtige prijs: een SSD
-VBA voor Doe het Zelvers deel 3
-Appeltje eitje......of toch niet?
-Zijn we op weg naar Windows 9?
-Kanaal van de Maand - 2
-Postvak-in
 

De redactie bestaat uit:
CorVerm (Eindredacteur)
ErpCity
femke98
K1pje
leofact
OctaFish

De redactie is te bereiken op nieuwsbrief@helpmij.nl. Naar dit e-mailadres géén vragen sturen die betrekking hebben op computers en dergelijke. Deze horen op het forum geplaatst te worden.

Oplage
De nieuwsbrief wordt naar 29495 unieke e-mailadressen verstuurd. Deze e-mailadressen zijn via opt-in geselecteerd.

Adverteren
Indien u een advertentie wilt laten plaatsen in deze nieuwsbrief neem dan contact op met de redactie.

nod32 bestellen

Advertentie informatie aanvragen

Aan- en afmelden
Om u aan te melden voor de nieuwsbrief kunt u naar deze pagina gaan.
Wilt u de volgende uitgaven niet meer ontvangen, dan kunt u zich hier afmelden. Is deze nieuwsbrief naar u doorgestuurd en wilt u hem zelf ontvangen? Ga dan naar deze pagina en meldt u aan. U zult dan automatisch de volgende nieuwsbrief ontvangen.

Wilt u nog eens een artikel nalezen? Wanneer u lid van de vereniging bent, kunt u hier in oude nieuwsbrieven bladeren.

DISCLAIMER
Alle handels en/of productnamen hier vermeld, zijn eigendom van de respectievelijke eigenaars. De redactie van de Helpmij Nieuwsbrief gaat uiterst zorgvuldig te werk bij de vergaring, totstandkoming en publicatie van de informatie in de nieuwsbrief. Niettemin kunnen er geen rechten worden ontleend aan de inhoud van de nieuwsbrief en sluit de redactie iedere aansprakelijkheid uit voor eventuele gevolgen, waaronder begrepen directe en indirecte schade. Het toepassen van informatie en gebruik van software is voor eigen risico. De adressen van de abonnees zullen nimmer openbaar worden gemaakt en/of verkocht aan derden. Bij misbruik van het distributiesysteem van de nieuwsbrief door onbevoegden of een mogelijke storing, van welke aard dan ook, kan de redactie niet aansprakelijk gesteld worden voor eventuele daaruit voortvloeiende schade. Het is niet toegestaan om de inhoud, of delen daarvan, zonder voorafgaande schriftelijke toestemming te gebruiken.

De redactie heeft het recht om (ingezonden) bijdragen zonder opgaaf van redenen te weigeren, dan wel te wijzigen of in te korten.


Voorwoord

Auteur: CorVerm

Top

De januarimaand is omgevlogen ondanks dat deze ook dit jaar weer gewoon 31 dagen lang was. Het was wel een maand met aardig wat nieuws. In de eerste plaats van de kant van Microsoft met de aankondiging van Windows 9 en het ongelooflijke gerucht dat bij Windows 8.1 update 1, welke rond 11 maart verwacht wordt, bij het opstarten direct het bureaublad verschijnt en niet meer het Metro interface. Dit laatste om aan desktop/muis gebruikers tegemoet te komen. Wel wat laat om tot inkeer te komen want iedereen heeft ondertussen Classic Shell of een variant daarop geïnstalleerd. Maar ja, Redmond is ook maar een dorpje ergens onder de rook van Seattle, het duurt misschien wat langer voordat wereldwijd geuit ongenoegen daar doordringt. 

Op de C.E.S. in Las Vegas was het hete thema dit jaar "wearables". Talloze exposanten toonden op horloges lijkende apparaten waarmee men kan bellen en berichten versturen, terwijl direct ook het calorieverbruik van de wandeling gemeten wordt, gekoppeld aan een gps ontvanger welke dan de afstand tot thuis berekent om bijtijds de, door domotica gestuurde, koffiezetter in te schakelen. Supersmart watches gaan het helemaal worden!

In dit nummer van onze nieuwsbrief zijn weer een aantal interesante zaken te vinden zoals een nieuw deel van de Acces cursus, een artikel over VBA en onze maandelijkse prijsvraag waarmee dit maal een SSD te winnen is.

Wij wensen iedereen veel leesplezier!




Access Cursus Hoofdstuk 21

Auteur: OctaFish

Top

Werken met Recordsets (deel 1)

Al een aantal keren heb ik aangegeven dat ik het in de cursus zou gaan hebben over het koppelen van een Front-end database aan een Backend middels Recordsets. En daar ga ik nu (eindelijk) mee beginnen! Er is namelijk een hele goede reden om een Frontend database te maken die je met behulp van Recordsets laadt vanuit de Backend. Laten we er daar eens een paar van onder de loep nemen:

Belasting van de Backend

Zoals je misschien wel weet, kun je met een beperkt aantal gebruikers in één en dezelfde database werken zonder dat je veel problemen gaat krijgen met de performance van die database. Dat aantal gebruikers ligt tussen de 5‑10 personen. En dan liever 5 gebruikers dan 10. Heb je een database waar meer mensen tegelijk in moeten werken, dan is het verstandiger om de database te splitsen, en elke gebruiker een eigen Frontend te geven. Hiermee vergroot je het aantal gebruikers dat tegelijkertijd in de database kan werken aanzienlijk en het is ook gelijk veel makkelijker om elke gebruiker een op maat gesneden werkomgeving te geven. Hij/zij krijgt dan een Frontend met exact die formulieren die hij/zij nodig heeft, en meer niet.

In deze constructie heb je nog steeds gebruikers die continu verbonden zijn aan de database, en dat levert toch een bepaalde druk op in de database. Die druk kun je omlaag brengen door de Backend database met recordsets te benaderen op het moment dat het echt nodig is.

Verschillende Access versies

Sinds Microsoft Access 2007 heeft uitgebracht, is er nogal wat veranderd in de database structuur. Zelfs met de vorige versies, die allemaal van hetzelfde bestandsformaat (mdb) gebruik maakten, was er maar moeizaam uitwisseling mogelijk met vorige versies. Dat wil zeggen: het lukt meestal nog wel om een oudere database in te lezen in een nieuwe versie, maar omgekeerd lukt dat dus niet: je kunt geen Access 2003 database inlezen in Access 2000, tenzij deze in de 2003 versie is gemaakt in het 2000 format. En dat kan behoorlijke problemen opleveren.

Als je een (backend) database benadert met ADO of DAO, dan maakt het niet zoveel uit met welke Access versie de backend is gemaakt; je leest namelijk rechtstreeks uit de tabellen. En die kun je dus ook vanuit een oudere database benaderen.

Zijn er beperkingen?

De versieverschillen in Access hebben meestal te maken met specifieke aspecten als formulieren. Als je een koppeling legt vanuit een oudere database, heb je met formulieren e.d. weinig te maken, want je kijkt alleen naar de tabellen. Je krijgt dan hooguit te maken met velden die meervoudige waarden bevatten (Access 2007 en hoger) en berekende velden; veldtypes die in de oudere databases niet bestaan.

Over “velden met meervoudige waarden” heerst wellicht verwarring bij gebruikers, want eigenlijk is dat iets wat niet thuis hoort in een fatsoenlijke database. Zelf ben ik er dan ook geen voorstander van om deze veldtypes te gebruiken. Eén van de normalisatieregels stelt dat je in één veld precies één waarde opslaat. En als je dus in een veld meerdere waarden zet, dan ligt die regel ergens buiten op straat, maar niet meer in de db. Exact de reden dat ik eerst een absoluut tegenstander van dit veldtype was.

Microsoft heeft in zijn nieuwere versies, waar dit veldtype dus in zit, een vorm bedacht waarin de opgeslagen waarden wel degelijk genormaliseerd kunnen worden. Access maakt hierbij gebruik van interne tabellen, en daarmee kun je toch genormaliseerd werken. Jammer genoeg werkt dit niet als je via een Recordset verbinding maakt met zo’n veld. Je krijgt dan alle opgeslagen waarden in één string te zien, en je moet daar dus zelf een oplossing voor vinden om dat veld weer te normaliseren.

Een andere regel stelt dat gegevens die afgeleid kunnen worden van andere gegevens óók niet worden opgeslagen in de tabel. Daar verdwijnt dus het “Berekende veld”, want dat doet precies dát: een waarde opslaan die is gebaseerd op waarden in dezelfde record. Deze waarden zijn gelukkig dan wél hard opgeslagen in het veld, en kunnen dus gewoon worden uitgelezen. Dat het veel beter is om de waarden zelf te berekenen, lijkt mij duidelijk. Het is de enige garantie dat de uitkomst ook echt klopt.

ADO of DAO?

Microsoft biedt al jaren de mogelijkheid om ofwel via ADO, ofwel via DAO met recordsets te werken. Of, mocht je dat willen, met allebei. Al raad ik dat eigenlijk niet aan, omdat de structuur van de twee methodes nogal overeenkomt, maar ook wezenlijke verschillen kent. En het is lastig om die te omzeilen als je met beiden tegelijk aan het werken bent. Bovendien zit er nauwelijks verschil in qua performance.

Waarom twee methodes?

Goede vraag, en hij verdient dan ook een goed antwoord. Microsoft heeft min of meer vanaf het begin DAO ondersteund, en doet dat de laatste jaren met versie 3.6. Deze versie vind je dan ook in veruit de meeste Access versies. Daarnaast wordt al jaren het einde van DAO aangekondigd door Microsoft, en wordt beweerd dat DAO ook niet verder meer ontwikkeld wordt. Toch heeft Microsoft in Access 2010 DAO 3.6 vervangen door een nieuwere versie: Microsoft Office x.x Access Database Engine Object Library. In Access 2010 is dat: “Microsoft Office 14.0 Access Database Engine Object Library”.

Dit dus in tegenstelling tot ADO, dat met elke nieuwe Access versie verder stijgt in versienummer. Waar de laatste ‘oude’ Access versie (2003) nog werd geleverd met ADO 2.8, is in de voorlaatste versie (2010) ADO gestegen naar 6.1.

Er blijken nog heel veel gebruikers van DAO te zijn, en omdat er wel degelijk praktische verschillen tussen de methodes zitten, kan Microsoft het blijkbaar niet over zijn hart verkrijgen om de ondersteuning voor DAO stop te zetten. Daarom kunnen we nog steeds met twee technieken werken.

Welke versie moet je gebruiken?

Die vraag is niet zo een-twee-drie te beantwoorden, en hangt af van de databases waar je mee werkt. Als het om snelheid gaat, kun je beide varianten gebruiken, want je zult met de huidige generatie computers nauwelijks verschillen merken tussen DAO en ADO. Maar werk je met verschillende database versies, dan is het wellicht verstandig om met DAO te gaan werken, omdat dat in alle Access uitvoeringen met dezelfde versie werkt: 3.6 namelijk. Dat gezegd hebbende: het wordt lastig om vanuit een Access 2003 database met DAO een verbinding te maken met een Access 2007/2010 database, omdat in de nieuwere versie een andere DAO engine wordt gebruikt. De Access 2003 kan daar niet mee overweg. Er is dus een duidelijke scheidslijn van wat wel kan, en wat niet.

De ADO machine is door de jaren heen behoorlijk veranderd. Niet alleen in versienummer, maar ook in de onderliggende database engine. Tot en met versie 2003 gebruikte Microsoft de Jet engine voor de connectie, maar met ingang van 2007 (en dus ook de hogere versies) wordt met ACE gewerkt. Dat maakt voor de opdrachten niet eens zoveel uit, maar het leggen van de connectie zelf moet gebeuren met een specifieke verwijzing naar de Engine, dus je krijgt met twee verschillende connectiestrings te maken. Die strings zien er bijvoorbeeld zo uit:

cnnDB.Provider = "Microsoft.Jet.OLEDB.4.0"

Voor de JET engine, en

cnnDB.Provider = "Microsoft.ACE.OLEDB.12.0"

Voor de ACE engine.

Heb je eenmaal bepaald met welke database je een connectie wilt maken, dan kun je dus verder gewoon werken met de databases, maar je moet daar dus wel rekening mee houden. Met DAO speelt dit allemaal niet.

In het eerste voorbeeld gaan we een verbinding maken met een externe database vanuit een bestaande database. In de volgende hoofdstukken gaan we een Frontend database bouwen, maar nu kun je de voorbeelden in elke willekeurige database uitproberen.

Verbinding maken met DAO

Om verbinding te maken met een andere database moet er eerst een Workspace worden vastgelegd. Werkgeheugen dus voor de te openen database. Workspaces zijn een eigenschap van het applicatieobject DBEngine en de dbEngine is het hoogste niveau in het DAO datamodel. Je begint dus altijd vanuit de DBEngine te bouwen. De DBEngine zelf is weer een eigenschap van de Applicatie, en dat is in essentie dan weer de Access database van waaruit je start.

De regels waarmee we de Workspace definiëren zien er zo uit:

Sub DAO_Access()

Dim ws As DAO.Workspace

Dim db As DAO.Database

Dim rs As DAO.Recordset

Dim fld As DAO.Field

Dim sDb As String, sSQL As String

Dim sMsg As String

We beginnen weer, zoals gewoonlijk, met het declareren van variabelen. In mijn test database heb ik zowel ADO als DAO al geladen, dus ik geef specifiek aan dat het om het DAO datamodel gaat. Gebruik je alleen DAO of alleen ADO, dan kun je dat eventueel weglaten, al is het altijd beter om de verwijzingen volledig te gebruiken. Dan weet je ook altijd wat je precies hebt gedeclareerd.

We definiëren dus een variabele als Workspace, een variabele als Database en een variabele als Recordset. Dat laatste hebben we al eerder gedaan in de cursus, dus dat type zou je bekend voor kunnen komen. Daarnaast definiëren we nog twee strings voor het pad naar de database, en voor de uit te voeren SQL instructie op de database.

    sDb = "D:Documents_HelpMijMs Accessbetalingen.mdb"

    sDb = "D:Documents_HelpMijMs Accessbetalingen.accdb"

Ik heb alvast twee strings gemaakt, één voor een Access 2003 database, en één voor een 2010 database. Uiteraard kan sDb maar één waarde bevatten, dus de eerste string wordt in deze code vervangen door de tweede. Om de andere variant uit te proberen kun je de volgorde omwisselen, of één van de twee opmaken als commentaar.

    Set ws = DBEngine.Workspaces(0)

    Set db = ws.OpenDatabase(sDb)

Hier gebeurt het echte werk. Met Set ws wordt aan de variabele ws een Workspace toegevoegd. Je kunt meerdere Workspaces tegelijk declareren, zodat je in één keer verschillende databases kunt openen, maar erg zinvol zal dat meestal niet zijn. De eerste Workspace wijs je toe met de waarde 0 zoals in de code. De opdracht Set ws1 = DBEngine.Workspaces(1) zou je dus ernaast kunnen declareren als je een tweede Workspace nodig hebt.

De opdrachtregel Set db = ws.OpenDatabase(sDb)opent vervolgens de database in de aangemaakte Workspace. Daarvoor wordt de opdracht OpenDatabase gebruikt.

    sSQL = "SELECT * FROM tblKlanten"

    Set rs = db.OpenRecordset(sSQL)

    For Each fld In rs.Fields

        If Not sMsg = vbNullString Then sMsg = sMsg & vbLf

        sMsg = sMsg & fld.Name

    Next fld

    MsgBox sMsg

In het volgende stuk wordt in de variabele rs een recordset geladen, in mijn voorbeeldje de tabel [tblKlanten]. Gebruik je een andere database, dan kun je hier uiteraard een andere tabel gebruiken.

Om te kijken of de code werkt (wat je overigens gauw genoeg merkt als je de procedure uitvoert), doen we nu niet veel meer dan in een lus door de veldnamen van de tabel lopen en de veldnamen in een Messagebox laten zien. Als dat lukt, dan weet je dat de code goed werkt.

    rs.Close

    Set rs = Nothing

    db.Close

    Set db = Nothing

    ws.Close

    Set ws = Nothing

End Sub

In het laatste stuk worden alle objecten gesloten. Dat is in beginsel niet nodig, want als een procedure wordt beëindigd worden ook alle variabelen opgeruimd. Het is echter netter om het wel zo te doen, zeker als je de ‘opruimcode’ combineert met een foutprocedure, zodat de variabelen ook echt opgeruimd worden, ook als de procedure vastloopt.

Verbinding maken met ADO

ADO werkt niet met Workspaces, maar met Connections. Je moet dus eerst een connectie maken met een database voordat je er mee kunt werken. Heb je eenmaal een connectie gemaakt, dan kun je weer recordsets openen binnen de connectie.

Sub ADO_XLAccess2003()

Dim cnnDB1 As ADODB.Connection

Dim rs1 As New ADODB.Recordset

Dim fld As ADODB.Field

Dim sDb1 As String, sSQL As String

Dim sMsg As String

Het gebruikelijke verhaal, eerst weer de variabelen declareren! Ik laat de code twee keer zien; één keer gesplitst voor een 2003 connectie en daarna in zijn geheel voor een Access 2010 database.

    sDb1 = "D:Documents_HelpMijMs Accessbetalingen.mdb"

    Set cnnDB1 = New ADODB.Connection

We hebben de variabele cnnDB1 ingesteld als ADODB.Connection, en hij wordt ingesteld met Set.

    With cnnDB1

        .Provider = "Microsoft.Jet.OLEDB.4.0"

        .CursorLocation = adUseClient

        .Open sDb1

    End With

Een connectie heeft, zoals de meeste objecten, een aantal eigenschappen die je kunt instellen. In dit voorbeeld gebruiken we er drie: Provider, CursorLocation en Open. Daarvan is de laatste logisch, want het is nu eenmaal de bedoeling om een database te openen. De parameter die Open krijgt is dan ook de volledige verwijzing naar de te openen database.

De eigenschap Provider

De eigenschap Provider wordt gebruikt om de database engine te duiden waarmee de connectie moet worden gemaakt. Zoals ik al eerder zei: de nieuwere versies van Access (2007/2010/2013) gebruiken een andere engine, en de provider moet dan ook specifiek voor de database worden ingesteld.

De eigenschap CursorLocation

De eigenschap CursorLocation is een interessante, want hiermee geef je aan wat er met de opgehaalde gegevens moet gebeuren. Er zijn twee varianten: adUseClient en adUseServer.

Gebruik je adUseClient, dan wordt de volledige dataset waarmee gewerkt gaat worden overgehaald naar de computer waar de gebruiker aan werkt. Dit heeft voor- en nadelen. Voordeel is dat je voor de verwerking van de gegevens niet afhankelijk bent van de server waarvandaan je de gegevens ophaalt. Je hebt dus een hele snelle dataverwerking, want alle gegevens heb je lokaal staan. Nadeel is, dat het wat tijd kost om de complete dataset over te halen; elke keer als je gegevens ophaalt of wegschrijft, gaat er veel data heen en weer naar de databases.

Met adUseServer gebeurt precies het omgekeerde. Nu blijft alle data zoveel mogelijk op de server staan, en wordt alleen datgene naar de client gehaald wat bewerkt moet worden. Voordeel hiervan is, dat er relatief weinig dataverkeer is op het netwerk. De verbinding tussen de databases is dus razendsnel. Nadeel kan zijn dat met veel gebruikers de resources van de databases in de knel kunnen komen, en er dus aan de server kant performance wordt ingeleverd. Het is dus zaak om een goede afweging te maken tussen een Client cursor en een Server cursor.

    sSQL = "SELECT * FROM tblKlanten"

    rs1.Open sSQL, cnnDB1

In de variabele sSQL staat de querystring die we willen openen. Die wordt vervolgens in de recordset geopend, waarbij de recordset dus als parameter de SQL string krijgt, en de juiste Connector. Ik heb al eerder aangegeven dat je met DAO makkelijk meerdere Workspaces tegelijk open kunt zetten, en voor ADO geldt hetzelfde, maar dan voor meerdere connecties. Je geeft dus in de Recordset aan in welke connector hij moet worden geopend.

    For Each fld In rs1.Fields

        If Not sMsg = vbNullString Then sMsg = sMsg & vbLf

        sMsg = sMsg & fld.Name

    Next fld

    MsgBox sMsg

Als de recordset is geopend, kun je er van alles mee doen. In dit geval test ik alleen of de constructie werkt, en dat gebeurt met een lus die door de Fields collectie van de recordset loopt, en alle veldnamen in een string zet. Deze wordt na het voltooien van de lus dan in een Messagebox getoond.

    rs1.Close

    Set rs1 = Nothing

    cnnDB1.Close

    Set cnnDB1 = Nothing

End Sub

En om alles netjes af te sluiten, eindigt de procedure met het afsluiten van de variabelen.

Hieronder vind je de volledige code voor het benaderen van een Access 2010 database. Die is identiek aan de code voor de Access 2003 database, met alleen een andere Provider string.

Sub ADO_XLAccess2010()

Dim cnnDB2 As ADODB.Connection

Dim fld As ADODB.Field

Dim rs2 As New ADODB.Recordset

Dim sDb2 As String, sSQL As String

Dim sMsg As String

    sDb2 = "D:Documents_HelpMijMs Accessbetalingen.accdb"

    Set cnnDB2 = New ADODB.Connection

     With cnnDB2

        .CursorLocation = adUseServer

        .Provider = "Microsoft.ACE.OLEDB.12.0"

        .Open sDb2

    End With

     sSQL = "SELECT * FROM tblKlanten"

    rs2.Open sSQL, cnnDB2

    For Each fld In rs2.Fields

        If Not sMsg = vbNullString Then sMsg = sMsg & vbLf

        sMsg = sMsg & fld.Name

    Next fld

    MsgBox sMsg

    rs2.Close

    Set rs2 = Nothing

    cnnDB2.Close

    Set cnnDB2 = Nothing

 End Sub

Samenvatting

Dit is pas deel 1 van het maken van een verbinding met een andere database. Je hebt gezien dat als je vanaf een Access 2003 database een verbinding wilt maken met een andere (2003 of oudere) database, je prima met DAO kunt werken. Het is vrij simpel om daarmee verbindingen te maken.

Wil je echter vanuit Access 2003 gegevens ophalen uit een 'hogere' database versie, dan ben je eigenlijk al aangewezen op ADO, omdat Access in de nieuwe versies gebruik maakt van nieuwere engines. En DAO kan die niet gebruiken, en ADO wel. De keus is dan dus simpel.

Volgende keer gaan we een onafhankelijk Front-end formulier maken, waarbij we de tabellen dus niet koppelen in de database, maar middels een Verbinding zoals dat hier beschreven staat.




Toch een downloadverbod?

Auteur: K1pje

Top

Het is niet groot in het nieuws geweest, maar er staat misschien aardig wat te gebeuren. Er bestaat een mogelijkheid dat in Nederland een downloadverbod opgelegd gaat worden! Waar komt deze “dreiging” vandaan en wat zijn de gevolgen hiervan?

De “dreiging” is ontstaan doordat verschillende elektronicawinkels en -fabrikanten de Stichting Thuiskopie hebben aangeklaagd. De bedrijven, waaronder Sony en Philips, klagen dat zij te veel thuiskopieheffing moeten betalen. Een belangrijke rol in deze zaak speelt het downloaden uit illegale bronnen, waar de thuiskopieheffing mede op is gebaseerd. Omdat de Hoge Raad vermoedde dat downloaden uit illegale bron helemaal niet mag, is de zaak doorverwezen naar het Europese Hof.

De advocaat-generaal van het EU-hof heeft vervolgens begin januari van dit jaar een advies uitgebracht in deze zaak. In dit advies wordt geconcludeerd dat er in Nederland een downloadverbod moet gaan gelden. Ondanks dat dit slechts een advies is, worden adviezen van de advocaat-generaal in veel gevallen overgenomen door het Europese Hof.

Momenteel is het legaal om muziek en films te downloaden, ook uit illegale bronnen. Software en games downloaden uit een illegale bron is daarentegen niet toegestaan. Uploaden, en het daarmee beschikbaar maken van bestanden waar normaalgesproken voor betaald moet worden, is altijd al verboden geweest!

Het mogen downloaden van films en muziek is gekomen omdat men vond dat het een recht was om een “back-up” te maken van gekochte muziek en films. Downloaden wordt wettelijk gezien als het maken van een kopie van een cd of dvd waardoor dit niet verboden is. De muziek- en filmmakers moesten daarvoor wel financieel gecompenseerd worden en de thuiskopieheffing werd in het leven geroepen. Sinds vorig jaar is deze thuiskopieheffing uitgebreid naar andere media zoals harde schijven en mobiele telefoons.

Met deze uitbreiding van de thuiskopieheffing is de cirkel weer rond. Mocht het advies van de advocaat-generaal van het Europese Hof overgenomen worden, dan betekent dit dat de thuiskopieheffing zal verdwijnen of verlaagd wordt en dat downloaden verboden zal worden. Mobieltjes, harde schijven, schrijfbare dvd’s, etc. zullen dan weer enkele euro’s goedkoper worden.

Meningen verschillen of wij Nederlanders dan beter af zijn of niet. Het is dus afwachten wat de uitspraak van het Europese Hof binnenkort zal zijn.




Een pleister op de zere wonde

Auteur: femke98

Top

webcam

Vorige maand het journaal en al het nieuws rondom de webcam gelezen? Er zijn namelijk mensen met weinig computerkennis die iemands camera of microfoon kunnen overnemen.
Als ze erin slagen een relatief simpel computerprogramma te installeren op de computer van hun slachtoffer, dan kunnen ze die computer besturen en bijvoorbeeld ook de webcam en microfoon gebruiken.

Deze maand werd er een 18 jarige man aangehouden op verdenking van het hacken van duizenden computers. De verdachte bleek in staat te zijn om op afstand opnames te maken met webcams van anderen. De verdachte kwam de computers binnen door het verspreiden van plaatjes en berichten die afkomstig leken te zijn van vrienden en bekenden. Als die zich in de computer genesteld hadden, kon hij op afstand de webcam overnemen en beeldmateriaal binnenhalen dat de gebruikers van de computer zelf hadden gemaakt. Nu vraag ik mij meteen af, wat waren dat dan voor een plaatjes en berichten en hoe konden deze zich dan nestelen in de computers?

Hoe werkt het dan? Je krijgt dus een mailtje van iemand dat er betrouwbaar uit ziet. Er zitten grappige geinige plaatjes in het mailtje en dus klikt men die aan, want men is nieuwsgierig en wil het plaatje groter bekijken. Wat er dan vervolgens gebeurd is dat er een programmaatje op je computer wordt geïnstalleerd waardoor je iemand anders toegang geeft tot je computer. Mijn vraag is, wat is het dan voor een programmaatje? Is dat een exe bestand?

Het hacken wordt vaak gedaan door middel van remote-control programma's. Er zijn op internet genoeg van deze programma's te verkrijgen onder andere namen. Een remote-control programma is een programma waarmee je op afstand andere computers kunt besturen. Vaak geeft je virusscanner (als je tenminste Windows gebruikt) dit aan als een Trojan horse (Trojaans paard). Een Trojaans paard is een (klein) programma dat vaak, vermomd als een nuttig programma, zichzelf op de harde schijf nestelt. Een cracker kan zich via een client-console toegang verschaffen tot een PC. Hij is in zo'n geval in staat om alle randapparatuur te besturen en om de gegevens op de harde schijf te bewerken, te kopiëren of zelfs te verwijderen. Trojaanse paarden worden vaak verstuurd als bijlage bij e-mail, vermomd als liefdesbrief of pornografisch materiaal, maar kunnen ook via chatprogramma's worden verspreid of verstopt zitten in programma's die gedownload worden van een website of een p2p-programma.

Generieke malware die een webcam kan besturen wordt al sinds 2005 gebruikt. Een zo'n programma is Sub7. Sub7 is een bekend Trojaans paard dat vroeger zeer populair was. Ook andere malware-toolkits waarmee gebruikers hun eigen malware-exemplaar kunnen maken bieden nog steeds de optie om toegang tot de webcam te verkrijgen. Dit is handig als je mensen wilt afpersen. Het gebruik van webcam-malware om slachtoffers af te persen of te vernederen is wel een uitzondering.

Veel van de malware-kits die in omloop zijn, zijn gebaseerd op oudere toolkits. In deze toolkits was de functionaliteit toegevoegd om webcams te benaderen. In nieuwe varianten of programma's die op deze kits gebaseerd zijn, zitten dan ook vaak dezelfde features. Daarnaast kan de webcam feature ook een "lokkertje" zijn om betalende klanten binnen te halen. Van veel programma's zijn een gratis en commerciële versie beschikbaar, waarbij de commerciële versies over meer features beschikt.

Toepassingen vanuit websites om de webcam te benaderen zijn eigenlijk veel interessanter. Een goed voorbeeld is het recente lek in Adobe Flash Player, waardoor het mogelijk was om toegang te krijgen tot de computers van gebruikers. In 2011 werd het lek in Adobe Flash ontdekt. Dit lek zorgde ervoor dat elke website je webcam en microfoon kon inschakelen, zonder dat je dit wist of daar toestemming voor had gegeven, om je vervolgens te bespioneren. De aanval zou in theorie op alle browsers werken, maar op dat moment liepen alleen gebruikers van Firefox en Safari risico.

Hoe komt zo'n remote-control programma op je computer:

Dit komt er nooit zomaar op al lijkt het vaak wel zo. Vaak gaat dit via links waarmee je onopgemerkt een klein bestandje download. Het kan ook zijn dat je iets download waar het programmaatje in mee komt.

Hoe weet je of je webcam gehackt is:

De makkelijkste manier is het lampje van de webcam. Brandt dit lampje terwijl je niks aan het doen bent met je webcam? Oppassen!!  Soms kun je het ook via taakbeheer zien. En dan niet via de programma's die actief zijn, maar via de actieve processen.

Tips om je privacy te beschermen:

Download dus geen bestanden die je niet vertrouwd, en open ook geen rare links in mailtjes e.d. Staat er een link in je mail en je kan je niet beheersen? Ga er dan met je muisaanwijzer op staan en kijk waar de link naar toe verwijst. Dat zie je dan onderin de balk van je e-mailprogramma. Voorbeeld hiervan zie je in het plaatje:

link bekijken

Download geen onbetrouwbare programma's. Klik nooit zomaar op plaatjes of geinige dingen die je toegestuurd krijgt. Draai je losse webcam om naar de muur of trek de USB-connector uit de computer als je de webcam niet gebruikt. Zo ben je zeker van dat niemand er iets door ziet. Het lijkt allemaal makkelijker dan het is. Natuurlijk komt niet met elk onbetrouwbaar programma een remote-control programma mee, ook andere soorten spy- en malware kunnen vervelend zijn.

Want kijk bij (vooral) Windows OS applicaties eens wat die voor troep installeren. Ik zie weleens bij mensen die Windows en dus (meestal) Internet Explorer gebruiken, dat de helft van het scherm vol toolbars staat omdat tientallen applicaties tijdens de installatie standaard staan aangevinkt en dus mee geïnstalleerd worden. Voorbeelden hiervan zijn de Ask toolbar, Google toolbar, Ask startpagina, gok applicaties en ga zo maar door. Het gros van de mensen klikt tijdens de installatie op Volgende > Volgende > Volgende en Voltooien zonder te kijken wat er eigenlijk geïnstallerd gaat worden. Als ik vraag wat een bepaalde applicatie is, dan weten ze het niet want 'dat stond er opeens op'. Windows is gewoon een stuk minder huis- tuin- en keuken PC-vriendelijk! Als ik dat soort dingen zie of hoor, word ik gewoon spontaan chagrijnig en zou ik willen dat iedereen over zou gaan op Linux.

Maar mijn vraag staat nog steeds open. Gaat dat hacken via een exe bestand? Dat kan inderdaad. Het is overigens oppassen geblazen met alle uitvoerbare bestanden (exe) of scripts (vbs) die als bijlage via e-mail ontvangen worden.

Voor de verspreiding van malware zijn exe-bestanden het populairst. Naast exe-bestanden verstoppen cybercriminelen ook met regelmaat malware in Word-documenten en PDF-bestanden. Word-bestanden blijken verantwoordelijk voor het uitvoeren van 9,6 procent van de malware, terwijl PDF-bestanden goed zijn voor 7 procent van de malware. Exe-bestanden zijn echter veruit de meest populaire vormen van malware. Maar liefst 35,7 procent van alle malware die via e-mail wordt verspreid is een exe-bestand.

Dat doet mij wel denken dat ik als Linux gebruiker veel veiliger ben dan gebruikers van menig ander besturingssysteem. En dat ik daar wel een beetje gelijk in heb, blijkt wel aan dit lijstje wat in het NOS journaal te zien was:

lijstje

Het lijstje geeft de volgorde aan welk besturingssysteem het meest kwestbaar is. Linux staat als laatste in de rij en is dus het minste kwetsbaar.

Dat justitie adviseert om de camera van je computer af te plakken en je microfoon uit te schakelen, is wel opvallend. Hoe schakel je de microfoon eigenlijk uit?

In Windows

Gebruikers van Windows 8 moeten eerst naar het bureaublad. Klik vanaf daar met de rechtermuisknop op het speakerpictogram, rechtsonder bij de klok. Kies in het menu dat nu verschijnt op 'Opnameapparaten'. Er verschijnt nu een lijst met één of meerdere microfoons. Klik met de rechtermuisknop op elke microfoon en kies in het menu dat nu verschijnt op 'Uitschakelen'. Ongedaan maken? In hetzelfde venster als zojuist: klik met de rechtermuisknop in het witte deel van het venster en zorg ervoor dat de optie 'Uitgeschakelde apparaten weergeven' is ingeschakeld. Klik daarna met de rechtermuisknop op de uitgeschakelde microfoon en kies in het menu dat nu verschijnt op 'Inschakelen'.

Op de Mac

Klik linksboven op het Apple-logo en kies in het menu dat nu verschijnt op 'Systeemvoorkeuren'. Kies in het zojuist verschenen venster voor 'Geluid'. Klik op de knop 'Invoer'. Verplaats nu het schuifje bij 'Invoervolume' helemaal naar links.

In Linux?

Dat wordt dus nergens aangegeven!!

Webcam uitschakelen

In Windows gaat dat als volgt: Ga naar 'Apparaatbeheer'. Klik de webcam aan met de rechter muisknop en kies voor in het contextmenu voor 'Uitschakelen'.

Van een Mac heb ik totaal geen verstand en dus heb ik dit op moeten zoeken. Het enige wat ik heb kunnen vinden is dat je het programma iSight Disabler kunt downloaden en installeren. Met dit programma kan je de webcam aan- en uitzetten.

In Linux zet je de webcam uit met behulp van de terminal. Open de terminal en kopieer en plak de volgende code:sudo modprobe -r uvcvideo
Er wordt daarna om je wachtwoord gevraagd, vul dit in. Druk daarna op enter en wanneer je geen errors te zien krijgt, is je webcam uitgeschakeld. Om hem weer in te schakelen zet je de volgende code in de terminal: sudo modprobe uvcvideo

Webcam afplakken?

Vind je toch dat je je webcam moet afplakken maar vind je een sticker op je laptop niet mooi? Je kunt voor een paar euro ook een soort schuifje aanschaffen en dat op je computer plakken. Zo kun je de lens op elk gewenst moment openen en sluiten, zoals dat met oudere webcams vroeger kon. Natuurlijk kun je ook het speciale NOS op 3 Hidecam Opzetrondje downloaden, uitknippen en in elkaar vouwen. En anders kan je nog een pleister nemen. Een pleister? Ja, omdat het middelste gedeelte van een pleister niet plakt, en dat zorgt er in ieder geval voor dat je geen lijnresten op je lens krijgt.

Maar nu nog een andere vraag: stopt het malware-gebeuren als je je webcam afplakt? Het antwoord hierop is natuurlijk ontkennend, het stopt absoluut niet! Want wie zegt mij dat zo'n malware remote-programma niet meer kan dan alleen je webcam inschakelen? Wie verteld mij dat zo'n programmaatje mijn documenten en andere bestanden niet kan kopiëren en/of verwijderen? Daarom is mijn mening dat het afplakken van je webcam slechts een pleister op een zere wonde is.




Helpmij.nl prijsvraag februari. Met een prachtige prijs: een SSD

Auteur: Helpmij.nl

Top

Ook in februari is er weer een prachtige prijs te winnen! Doe dus (weer) mee!

De prijs van de maand februari is een razendsnelle 128GB OCZ-Vertex 450 SSD

februari 2014: sdd..jpg

Deze SSD welke is uitgerust met de nieuwe Indilinx Barefoot 3 M10 controller, heeft een leessnelheid van 525 MB/s waardoor er beslist geen tijd meer is voor koffie tijdens het opstarten van de PC.

Denk je het juiste antwoord te weten op de onderstaande drie vragen, klik dan hier voor het wedstrijdformulier! Doe dit wel vóór 28 februari om kans te maken op deze prachtige prijs!

Bovendien ontvangt de winnaar een licentie voor Nod32 antivirus software van ESET!

De vragen:

1: Welk bedrijf is de eigenaar van OCZ en sinds wanneer?
2: Welke, bij een normale harde schijf eens in de zoveel tijd noodzakelijke, handeling is bij een SSD overbodig?
3: Wat is de naam van de technologie die het trager worden van SSD's bij veel gebruik tegengaat?

Succes!

De prijswinnaar van onze januari prijsvraag:

De prijswinnaar van de maand januari is TheNeonator. Hij ontvangt het schitterende GA-Z87-HD3 moederbord van GigaByte Bovendien ontvangt de winnaar een licentie voor Nod32 antivirus software van ESET. Gefeliciteerd!


De prijzen worden aangeboden door:

en



*Bestuur en wedstrijdcommissie zijn uitgesloten van deelname!
*De winnaar wordt bekend gemaakt in de maart editie van onze nieuwsbrief.




VBA voor Doe het Zelvers deel 3

Auteur: leofact

Top

VBA voor Doe het Zelvers is een reeks artikelen, bedoelt voor mensen die met VBA in Excel aan de slag willen om taken te automatiseren, of om deze toegankelijk te maken voor gebruikers met weinig Excel kennis. VBA is een volwaardige programmeertaal, met een woordenschat en een zinsopbouw (syntaxis). Om deze goed te leren wordt het aangeraden om hierover boeken te lezen. Bijvoorbeeld uit deze willekeurige selectie.

Vorige aflevering

In de vorige aflevering is uitgelegd wat een procedure en een Function inhouden en waarin ze verschillen. Verder werd de opbouw van VBA als Object Model uitgelegd en werden Methodes en Eigenschappen uitgelegd. De invoer van code m.b.v. van IntelliSense werd besproken en als laatste werden de verschillende manieren om een Macro te starten besproken.

In deze aflevering

Als eerste maken we pas op de plaats en noem ik sites met achtergrondinformatie over VBA. Ook wordt MZ-Tools geïntroduceerd. Met MZ-Tools wordt het makkelijker om VBA code in te voeren. Verder wordt in deze aflevering uitgelegd wat variabelen zijn, wat je er mee kunt en hoe je ze gebruikt. Als laatste wordt het werken met cellen en bereiken besproken. Er is een voorbeeld bestand als bijlage toegevoegd, waarin het werken met bereiken zichtbaar wordt gemaakt.

Informatie op internet

Er is op internet veel te vinden over VBA. Een kleine selectie van sites die voor mij handig zijn gebleken, vind je hieronder:

http://www.snb-vba.eu SNB is een actieve helper op Helpmij. Hij houdt een uitgebreide site bij waar veel uitleg is te vinden van VBA. Bibliotheken, Objecten, Eigenschappen en Methoden komen uitgebreid aan de orde. (Nederlands en Engels)
http://msdn.microsoft.com/library/office De ontwikkelaars-site van Microsoft zelf (Engels).
www.rondebruin.nl Bevat veel code voorbeelden (Engels).
www.ozgrid.com/VBA/ Nog meer voorbeelden (Engels).
wikipedia.org/wiki/Lijst_van_Microsoft_Excel-functies Alle Excelfuncties en de Engelse vertaling daarvan.

Dit overzicht is verre van compleet. Google daarom vooral zelf naar de sites die je aanspreken.

MZ-Tools

Dit is een handige en gratis uitbreiding van de Macro Editor. MZ-Tools biedt een scala aan handige gereedschappen en assistenten die het op allerlei manieren makkelijker maken om met code om te gaan.

  1. Download MZ-Tools: ** klik hier **.
    (kies de “for VBA” versie)
  2. Voer de installer uit, door op het gedownloade bestand te klikken. Hierbij dient Excel gesloten te zijn.
  3. Open Excel en vervolgens de VBA Editor (Alt + F11)
    Mogelijk is MZ-Tools werkbalk nog niet zichtbaar. Ga dan naar Beeld > Werkbalken > MZ – Tools 3.0 en selecteer deze.
MZ Tools, beeld.png

Er wordt nu een werkbalk zichtbaar met knoppen voor de diverse gereedschappen. Zie hieronder voor een gedeeltelijke selectie daarvan:

februari 2014: MZ balk..jpg

  1. Kopieert en plakt objecten met de bijbehorende code.
  2. Activeert de zoek-functie welke handige extra’s bevat.
  3. Opent een nieuwe procedure.
  4. Plaatst een Module of Procedure Header. Ook een Error Handler (fout afhandeling procedure) kan hiermee worden ingevoegd.       
  5. Zet regel nummers aan of uit.
  6. Breekt regels af op leesbare breedte, of geeft ze weer in de volle breedte.
  7. Opent een menu met extra Tools, o.a. om een Message Box op te bouwen.
  8. Opent het Option Menu, waarin alle functies naar eigen wens kunnen worden aangepast.      

Variabelen

Variabelen maken het mogelijk eenzelfde berekening te maken met verschillende getallen of gegevens. Ze zijn bekend vanuit de wis- en meetkunde. Een bekend voorbeeld daarvan is de stelling van Pythagoras (berekent rechthoekige driehoeken): A2 + B2 = C2. In getallen 32(=9) + 42(=16)  = 25. C is dus de wortel van 25 = 5. Alle getallen A en B geven uitkomst C.
In VBA zijn er verschillende soorten variabelen:

  • Boolean: omvat alleen de waarden; waar of onwaar.
  • Byte: een geheel getal van 0 tot 255 (één byte groot)
  • Integer: voor gehele getallen van -32768 tot +32767
  • Long: voor getallen van  -2.147.483.648 tot 2.147.483.647
  • Single: voor getallen van -3.402823E38 tot -1.401298E-45 en positieve getallen van 1.401298E-45 tot 3.402823E38. (getallen met bewegende komma)
  • Double: voor negatieve getallen van -1,79769313486232E308 tot -4,94065645841247E-324 en positieve getallen van 4,94065645841247E-324 tot 1,79769313486232E308 (zeer grote getallen met bewegende komma)
  • Currency: speciaal voor getallen met decimaal punten (bedragen) tussen -9223372036854770,5808 en 9223372036854770,5808.
  • String: voor tekst.
  • Date: voor datum en tijd waarden.
  • Object: bevat een object. Bijvoorbeeld een werkblad
  • Variant: dit datatype kan alle overige datatypes bevatten.

De verschillende types zijn van belang, omdat zij aangeven wat voor data zij bevatten. Bovendien is het geheugengebruik van de verschillende types verschillend. Zo is er voor Byte slecht één byte nodig, voor een Single 4 bytes en voor een Double 8 bytes. Om het gegevenstype van een variabele in te stellen dient deze gedeclareerd of gedimensioneerd te worden:

     Dim lTeller as Long;

Dit zorgt ervoor dat lTeller alleen Long getallen kan bevatten. Variabelen kunnen stuk voor stuk onder elkaar of achter elkaar in één regel worden gedeclareerd:

     Dim lTeller as Long, bSwitch as Boolean, dDatum as Date

Er wordt ook wel als volgt gedeclareerd:

     Dim lTeller, lHoogte, lBreedte as Long

Excel slaat dan geen alarm. De variabelen worden echter dan als Variant ingesteld en dat kan, buiten onnodig geheugen gebruik, onbedoelde effecten opleveren; een Long variabele blijkt dan bijvoorbeeld onbedoeld een Variant. Er volgt dan ook geen foutmelding als daar abusievelijk tekst aan wordt toegewezen.

Het is een goede gewoonte om variabelen een naam te geven die op de inhoud slaat. Geef in de naam ook het gegevenstype op. Voor naamgeving zijn er eenduidige afspraken gemaakt. Hierover kun je meer lezen in de volgende (Engelse) link: http://goo.gl/tqlqC1
In deze reeks gebruik ik alleen de eerste letter van het gegevenstype.

Over het algemeen zal een procedure ook werken als de variabelen niet gedeclareerd zijn. Het is dan niet duidelijk welk gegevenstype de variabele bevat en het geheugengebruik zal onnodig groot zijn. Option Explicit zorgt ervoor dat Excel een foutmelding (Variabele is niet gedefinieerd) genereert wanneer je vergeet om de variabele te declareren.

Tip: de Integer was in het verleden nuttig omdat hij weinig geheugen nodig had. In de praktijk wordt de Integer tegenwoordig door de compiler in een Long omgezet en kan er dus beter de Long worden gebruikt. (informatie)

Om een variabele te gebruiken dient deze te worden geïnitialiseerd. D.w.z. er moet een waarde worden toegewezen. Dat gaat als volgt:

     LTeller =10

En bij een Object:

     Set oBlad = ActiveSheet

De variabele is op de volgende manier weer vrij te geven:

     Set oBlad = Nothing

Dit geeft de gebruikte geheugenplaats weer vrij. 

Array

Een Array is een variabele met één of meer dimensies, die te zien is als een reeks variabelen, die logisch bij elkaar horen. Bijvoorbeeld de elftallen van een voetbalclub en de spelers daarvan. Stel de club heeft 8 elftallen met 11 spelers elk, dan zou het Array als volgt opgebouwd kunnen worden.

     Dim sSpelers(8, 11) As String

Een Array lijkt op een tabel. Eén van de voordelen van het gebruik van een Array is dat bewerkingen vele malen sneller worden uitgevoerd.

Constants

Constants (constanten) onderscheiden zich van gewone variabelen, doordat zij vaste waardes bevatten. Een Constant wordt als volgt gedeclareerd:

     Const sClub As String = "AZ"

De inhoud van een Constant kan niet meer worden gewijzigd na de declaratie. VBA gebruikt ook Constants om waarden te vervangen. Deze worden vooraf gegaan door vb. vbCr staat bijvoorbeeld voor een hard Return Chr (13)

            MsgBox "Dit is een zin." & Chr(13) & "met een tweede regel" 

            MsgBox "Dit is een zin." & vbCr & "met een tweede regel" 

Deze twee regels geven dan ook exact hetzelfde resultaat weer. In de help functie zijn alle te gebruiken Constants te vinden.

Levensduur

Variabelen hebben een levensduur of Scope. Wanneer een variabele in een Procedure of Function wordt gedimensioneerd met Dim, blijft deze alleen “bestaan” in de betreffende procedure. Daarbuiten wordt deze niet meer herkend en heeft geen waarde meer. Soms wil je juist dat de variabele ook buiten de procedure blijft bestaan. Dat kan op Module niveau, door de variabele boven de bovenste Procedure te declareren. Gebruik hiervoor Private. Zo wordt de Module variabele duidelijk gescheiden van de Procedure variabele, waarvoor Dim wordt gebruikt.

februari 2014: Code Module..jpg

De waarde van deze variabele kan nu worden doorgegeven naar andere Procedures of Functions in dezelfde Module.

Een Variabele kan ook openbaar (Global) worden gemaakt. De variabele blijft bestaan in alle Modules van het actieve werkboek. Deze kan boven elke willekeurige module worden gedeclareerd d.m.v. Public:

februari 2014: Public..jpg

Een andere methode is om variabelen door te geven bij aanroepen van de Procedure of Function:

februari 2014: Doorgeven..jpg

Procedures of Functions aanroepen vanuit een procedure wordt in een latere aflevering verder behandeld.

Cellen en bereiken

VBA kent verschillen manieren om bereiken te definiëren. Een bereik kan variëren van één enkele cel tot een complex van verschillende samengestelde bereiken, die al of niet kunnen overlappen. Het gedefinieerde bereik vormt vervolgens een object waar bewerkingen op uitgevoerd kunnen worden. Een greep uit de mogelijkheden om een bereik te definiëren:

  • Cells (rij, kolom)
    Deze opdracht verwijst naar één enkele cel met de gespecificeerde rij en kolom nummer.
  • ActiveCell
    Dit geeft de geselecteerde cel als resultaat.
  • Range (eerste cel, laatste cel)
    Geeft een bereik van een blok aaneengesloten cellen als resultaat. Er kunnen meerdere blokken worden gedefinieerd.
  • Offset (Rij stappen, Kolom stappen)
    Heeft als resultaat een relatieve verwijzing. Dit wordt opgegeven in aantal cellen horizontaal en aantal cellen verticaal. Dit kunnen negatieve getallen zijn.
  • Union (bereik 1, bereik 2, bereik 3...)
    Dit geeft een samenvoeging van het gespecificeerde bereiken.
  • Intersect (bereik 1, bereik 2, bereik 3...)
    Hiermee wordt het overlappende deel in de vorm van een blok cellen als resultaat gegeven. 
  • UsedRange
    Dit geeft als resultaat het in gebruik zijnde bereik.
  • Application.Goto (bereik, scroll)
    Hiermee wordt het genoemde bereik geactiveerd en geselecteerd (ook als het werkblad niet actief is).

Standaard is het resultaat een bereik op het actieve werkblad. Dat is lang niet altijd gewenst. In dat geval moet het gewenste werkblad (object) worden opgegeven. 

     Worksheets(“Demo1”).Cells(1,1).Value, of kort: Demo1.Cells(1,1)

Tip: Het is niet nodig om een cel te selecteren of te activeren, om daar een bewerking op uit te laten voeren door VBA. De procedure zal veel sneller lopen, wanneer dit achterwege wordt gelaten.

Range

Er zijn verschillende manieren en notatiewijzen om een bereik met Range te definiëren. Een korte greep:

  • de standaard manier:
    ActiveSheet.Range(“A1:D4”).Select
  • meerdere bereiken:
    ActiveSheet.Range(“A1:D4” , “F2:G6” , “K2:P9”).Select
  • met een variabele:
    ActiveSheet.Range(“A1:D” & lRij).Select
  • met gebruik van Cell:
    ActiveSheet.Range(“A1”, Cells(12,12)).Select
  • met een benoemd bereik:
    ActiveSheet.Range(“naam”).Select

Er is ook een verkorte schrijfwijze mogelijk. Dit geeft kortere code en dus minder type werk en (theoretisch) minder compileertijd. Voor deze reeks gebruik ik zelf de uitgebreide schrijfwijze van Range. Voorbeelden van de verkorte notatie:

     [A2]

     [A5:H6]
     [A1:D4, F4:K8, L9:Q12]
     [naam]

Bijzondere cellen.

VBA kent een set speciale celtypes, die handig kunnen zijn bij het opgeven van een bereik. Dit zijn de SpecialCells. Een paar voorbeelden:

  • xlCellTypeBlanks: alle lege cellen
  • xlCellTypeFormulas: alle cellen die formules bevatten
  • xlCellTypeLastCell: de laatste cel in het gebruikte bereik
  • xlCellTypeSameFormatConditions: cellen met dezelfde opmaak
  • xlCellTypeVisible: alle zichtbare cellen

Met xlCellTypeLastCell kan bijvoorbeeld de laatste gebruikte cel worden gevonden. Excel houdt echter niet altijd correct bij wat de laatst cel is, van het in gebruik zijnde bereik.

Op de volgende wijze is het rijnummer van de laatste cel meer betrouwbaar te achterhalen:

     Range("A" & Rows.Count).End(xlUp).Row

Bij het onderdeel over Range hoort een voorbeeldwerkboek, dat hier is te downloaden.

Het werkboek is een .xls, zodat het ook in Excel 2000 of later werkt. In de eerste aflevering van VBA voor Doe het Zelvers kun je terug vinden hoe een VBA werkboek in gebruik moet worden genomen.

Dit was het voor deze keer.

In deze aflevering werden de variabelen besproken, welke soorten er zijn, welke levensduur zij hebben en hoe ze gedeclareerd dienen te worden. Verder is de Array besproken en werd uitgelegd wat Constants zijn. Daarnaast werd het werken met bereiken besproken met de diverse mogelijkheden om naar bereiken te verwijzen. Het gebruik van Range werd daar uitgelicht en met diverse notatiewijzen besproken. Daarbij zijn tips gegeven die procedures kunnen versnellen en die bepaalde selecties kunnen vereenvoudigen.

Volgende keer wordt het werken met teksten besproken, aan de hand van de bouw van een dialoogvenster welke tot doel heeft de invoer van tekst makkelijker te maken.




Appeltje eitje......of toch niet?

Auteur: femke98

Top

mijn Acer Eind oktober 2013 kocht ik een nieuwe laptop, een Acer Travelmate P-255 M. Het doel van deze laptop was om mijn netbookje te vervangen, aangezien deze voor mij te klein werd. Mijn ogen werden er niet beter op en in mijn handen zit reuma, en ik moet zeggen dat is lastig werken op zo'n klein netbookje. Ik was er wel aan verknocht hoor en vond het eigenlijk zonde dat ik hem moest verkopen. Nou ja, dat had niet gehoeven, maar
wat moet je met een netbook als je dit niet meer gebruikt. In de kast laten liggen om te laten verstoffen is ook zo wat en nu kon ik er iemand blij mee maken.

De Acer was voor geïnstalleerd met Windows 7 en Windows 8. Je kon d.m.v. de herstelfunctie de laptop van Windows 7 naar Windows 8 zetten en vice versa. Maar zoals jullie weten ben ik een verwoed Linux gebruiker en dus bedacht ik mij dat ik er sowieso Linux bij wilde hebben.

Het toeval wilde dat ik nog een SSD over had, eentje van 60 GB en dat is genoeg voor een Linux installatie. Die SSD heb ik in mijn laptop gemonteerd op de plaats van de originele harde schijf met Windows. Op deze SSD heb ik een installatie gedaan van de bèta versie Ubuntu 14.04. Inderdaad, de versie die in april van dit jaar pas uitkomt. Waarom ik gekozen heb voor deze versie? In de eerste plaats omdat ik hoopte dat mijn laptop met deze versie wel keurig zou uitgaan, aangezien bij zowel bij Ubuntu 13.10, Linux Mint 13 als Xubuntu 13.10 de laptop niet afsloot. Als tweede reden omdat ik mee kan helpen om deze versie alvast te testen op foutjes. Linux gebruikers die deze nieuwe versies testen melden dan de foutjes en bugs, zodat deze eruit gehaald kunnen worden voordat de versie wordt uitgebracht.

Het afsluiten van de laptop ging trouwens met nieuwste versie van Ubuntu nog niet op de normale manier, de laptop moest dus nog steeds uitgezet worden met de aan/uitknop. Dit euvel was bekend in de community van Ubuntu maar er werd vooralsnog geen oplossing gevonden. Naderhand heb ik de oplossing gevonden, het probleem is verholpen door de BIOS van een update te voorzien.

Maar ik wilde Windows er wel bij houden want ik krijg via de mail nog weleens vragen over Windows. Dus kocht ik op internet een Caddy. Je hebt verschillende online winkels die deze Caddy's verkopen. Ook is er best wel veel prijsverschil, dus mijn tip is om niet bij de eerste de beste online winkel een Caddy aan te schaffen. Let er wel op dat er verschillende maten bestaan. Net als bij een DVD-speler zijn er twee maten van een HDD-Caddy beschikbaar: 9,5 mm en 12,7 mm. De meest gangbare maat van een HDD-Caddy is 12,7 mm. Het is dus van groot van belang dat je goed moet weten welk merk en welk type laptop je hebt. Mijn Acer heeft de maat van 9,5 mm nodig terwijl de Acer Travelmate P-253 de maat van 12,7 moet hebben!

Het mooie van deze HDD Caddy's is dat je hiermee de DVD-speler in je laptop door een harde schijf kan vervangen. Hierdoor heb je een tweede harde schijf tot je beschikking, waar dat eerst niet mogelijk was. 

SATA-HDD-Caddy
Sata HDD Caddy 9,5 mm

De HDD Caddy is gemaakt van aluminium en dat zorgt voor een betere afvoer van geproduceerde warmte. Daarnaast is de HDD Caddy zo gemaakt dat trillingen van de harde schijf worden gedempt. Lekker stil dus! Maak je er geen zorgen over of je SATA harde schijf ondersteund wordt. Zowel SATA I, SATA II als SATA III 2,5″ harde schijven worden namelijk ondersteund (maximaal 6Gbit/s).

Het allermooiste is misschien wel dat je het frontje van je DVD-speler op de HDD Caddy kunt plaatsen. Zo ziet je laptop er van buiten ook nog eens netjes afgewerkt uit! Zou je de DVD-speler nog willen gebruiken dan kan je er over nadenken om een behuizing voor de DVD-speler aan te schaffen, zodat je een externe brander hebt. Deze behuizingen zijn te koop in de online winkels waar je ook de Caddy's kan kopen.

Een DVD-speler is niet erg moeilijk uit een laptop te halen. Vaak zit de DVD-speler met één schroefje vast. Deze schroef je los en je kan dan zo de DVD-speler er uit trekken. Zo gezegd, zo gedaan.

schroefje losmaken dvd brander eruit schuiven

Tip: Kijk in de gebruiksaanwijzing van je eigen laptop hoe je de DVD-speler eruit kan halen, het verschilt namelijk per laptop!

Daarna het frontje van mijn DVD-speler er afgehaald en dit op de Caddy gezet. Op de DVD-speler zat een soort van ringetje waar het schroefje, dat ik uit de achterkant van de laptop heb gehaald, door moet. Dat ringetje moet dus op de Caddy worden overgezet. Daarna de harde schijf met Windows in de Caddy gedaan en de Caddy op de plek van de DVD-speler geschoven. Schroefje weer vast gemaakt en klaar is mijn laptop.

Nu is het zover, de laptop kan aangezet worden en met F12 ingedrukt zou ik het boot menu moeten kunnen kiezen. Appeltje eitje......toch? Helaas, mijn Caddy oftewel de tweede harde schijf werd niet gezien in het Bootmenu. Na in de BIOS te hebben gekeken of ik daar de opstartprocedure zou moeten veranderen kwam ik er achter dat ook daar de tweede harde schijf niet werd gezien.

Even een kleine uitleg over de BIOS.
De nieuwste computers hebben tegenwoordig UEFI. Zeer veel machines hebben al een UEFI BIOS, maar bootsen (emuleren) een reguliere BIOS na.
UEFI is de vervanger van de BIOS en waar BIOS een basisvoorziening is om het systeem op te starten, is UEFI meer een klein besturingssysteempje op zichzelf. UEFI is volledig platform onafhankelijk en veel uitgebreider. Het kan met alle aangesloten hardware overweg en in de praktijk betekent dit een hogere opstartsnelheid. De hardware wordt namelijk door UEFI ingeladen en niet meer door het besturingssysteem.

Een nadeel van een UEFI systeem kan zijn dat het vrij moeilijk is, soms onmogelijk, om een ouder Windows besturingssysteem te installeren, of bijvoorbeeld een Linux distro. Het is mogelijk om UEFI uit te zetten, en te booten in BIOS LEGACY (zeg maar het oude vertrouwde bios) mode, zodat ondersteunde partitie-formats kunnen worden gebruikt (NTFS, ext2, ext3 of ext4 en meer).

Mijn laptop heeft standaard de LEGACY BIOS aangezien Windows 7 het hoofdbesturingssysteem is. Daarom zal ik in dit artikel het woord BIOS blijven gebruiken. Het is dan makkelijker te begrijpen wat ik nu eigenlijk bedoel.

Ik kreeg van diverse personen op het Ubuntu forum de tip om LEGACY om te zetten naar EUFI. Veranderde ik echter LEGACY in EUFI, dan was Secure boot NIET uit te zetten.
En als ik al EUFI aanzette, en ik startte de laptop weer op dan kreeg ik de schermen van onderstaande foto's te zien.

scherm scherm 2

Mijn hele idee ging in rook op. Wat een flauwekul is dit, dacht ik bij mijzelf. Ik ging van alles proberen en heb zelfs de schijven omgedraaid, maar omdat dat niet werkte weer terug gezet zoals ze zaten. En het gekke daarvan was dat Windows 7 de schijf met Ubuntu wel zag en Ubuntu zag de schijf met Windows 7 ook. Waarom zag de laptop de tweede schijf dan niet? Het was wel duidelijk dat de security iets tegenhield, getuige het plaatje hierboven, maar wat? Ik werd er moedeloos van en besloot na 3 dagen van alles geprobeerd te hebben, de laptop maar te verkopen.

Op een gegeven moment kreeg ik een link van iemand waarin hetzelfde probleem werd beschreven en in die link stond aangegeven dat je eerst een supervisor password moet instellen in de BIOS. Daarna kunnen de secure boot en andere opties wél aangepast worden. Ook al was het voor een ander model laptop bestemd, het kon wel eens gaan werken op mijn laptop. Het was echt mijn laatste redmiddel.

Ik heb een Supervisor wachtwoord aangemaakt, daarna een User wachtwoord. Vervolgens moest ik in de BIOS het wachtwoord on boot op enable zetten. Daarna LEGACY op UEFI gezet en secure boot op disable. Het blijkt naderhand dat ik die wachtwoorden nu elke keer moest invoeren wilde ik veranderingen aan kunnen brengen in de BIOS, en dat op mijn eigen laptop!
Maar goed, LEGACY veranderen naar EUFI en secure boot op disable ging in eerste instantie niet, want ik kreeg een zwart scherm met de vraag of ik Windows wilde repareren. Dus terug de BIOS in (na alle wachtwoorden weer te hebben moeten ingeven) en heb toen één voor één de veranderingen laten doorvoeren. Tijdens het opnieuw opstarten gelijk op F12 gedrukt en zie daar, ik kreeg:

scherm 3 Dolblij was ik, want alle schijven werden in het Bootmenu gezien! Okee, de opstartvolgorde was niet helemaal zoals ik het hebben wilde, dus heb ik de Windows Boot Manager in de BIOS als laatste gezet. Toen ik tijdens het opstarten van de laptop weer F12 ingedrukt had, kreeg ik in het bootmenu 3 opties.

De HDD met Ubuntu als eerste optie (= dus de SSD)
De Windows Boot Manager als tweede
De HDD ST500LT012 (met installatie Windows 7)

Ik heb daarna gekozen om de laatste optie te nemen........ik kreeg een zwart veld met de volgende tekst:
GNU Grub version 2.00-11
Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions.
Anywhere else TAB listst possible device or file completions.
grub>_


Ik heb de computer opnieuw opgestart omdat deze boodschap mij totaal niets zei en tijdens het opstarten weer op F12 gedrukt. Daarna optie 2 opgestart en zie daar: Windows 7 startte gewoon op!

Daarna heb ik de optie Password on boot op disable gezet, want van dat constant inloggen op de pc, voordat je daadwerkelijk wat mag gaan doen, werd ik niet vrolijk.
Nu hoef ik alleen nog een wachtwoord in te voeren als ik wat in de bios wil veranderen. Dat wachtwoord moet ik zeker niet kwijtraken dus!

Nou, problemen opgelost.
Ik mag wel zeggen dat ik eh.......toch wel blij ben dat ik heb volgehouden. De aanhouder wint dus toch!! Schouderklop voor mijzelf (een ander geeft die toch niet).

De laptop blijft dus gewoon in mijn bezit. Ik ben er nu eindelijk na 5 dagen volop mee bezig te zijn geweest, dolblij mee. Het is dus niet altijd appeltje eitje, maar dit is wel een heel mooi leermoment geweest.




Zijn we op weg naar Windows 9?

Auteur: CorVerm

Top

februari 2014: balk win9..jpg

Hoe gaat het verder met Windows 8(.1)? Dat is een vraag die we onszelf sinds enige tijd kunnen stellen. Wat is het geval? Nog maar net gewend aan Windows 8.1, brengt Microsoft volgend jaar (waarschijnlijk april 2015) alweer een nieuw besturingssysteem uit; Windows 9. Voor een groot deel zou dat betekenen dat Microsoft luistert naar wat velen al zeggen sinds de verschijning van de eerste preview van Windows 8: maak het besturingssysteem eenvoudiger voor gebruik op pc en laptop. Dat zou kunnen betekenen dat het bureaublad weer centraal komt te staan. Daarmee zal de nieuwe versie afstand nemen van het Windows 8-debacle. Paul Thurrot van winsupersite.com is verantwoordelijk voor de laatste opmerking. Persoonlijk wil ik Windows 8(.1) geen debacle noemen maar eerder een zeer ongelukkige keus wat de bediening van het besturingssysteem betreft. Het door Microsoft terzijde zetten van het bureaublad en het verdwijnen van het startmenu in Windows 8 heeft veel kwaad bloed gezet.

Behalve dat het bureaublad weer centraal komt te staan werkt Microsoft er volgens de genoemde site aan om de tegel-interface in de desktopomgeving te laten draaien. Metro-apps (Modern UI-omgeving) zouden dan draaien als desktop-applicaties. Dat gecombineerd met de terugkeer van het startmenu maakt dat het huidige Windows 8 startscherm al helemaal niet meer nodig is. Hoe Windows 9 er uiteindelijk uit zal zien, is nog niet echt duidelijk.

Voordat we zover zijn verschijnt in april van dit jaar update 1 voor Windows 8.1; een relatief kleine update die het waarschijnlijk ook mogelijk maakt om Metro-apps in vensters binnen de desktop-omgeving te draaien. Gelekte beelden van de aankomende Windows 8.1 update tonen een verbeterde samenwerking tussen de desktop-stijl en de nieuwe Windows 8-stijl.

februari 2014: app..jpg
Ook is er een optie om apps uit de Windows Store in de taakbalk weer te geven

Gaan we nu met Windows 8 dezelfde kant op als met Windows Vista? Hoewel sommigen dat beweren wil ik zover niet gaan. We weten dat Vista geen daverend succes is geweest, maar om Windows 8(.1) in de lijn van mislukkelingen te scharen gaat mij toch te ver. Aan de andere kant brengt Microsoft besturingssystemen uit die om en om goed dan wel slecht (of zo je wil: minder goed) zijn. Na het debacle van Windows ME kwam Windows XP, het besturingssysteem dat heden ten dage nog gebruikt wordt. Na Windows XP moesten we aan Windows Vista en dat was dus ook al geen succes. Vista konden we snel vergeten dankzij de komst van Windows 7, dat weer wel een goed besturingssysteem is en duidelijk afstand nam van zijn onpopulaire voorganger.
Windows 8(.1) is niet echt populair onder de, wat ik altijd maar noem, gewone computergebruiker. Te ingewikkeld, geen prettige bediening en teveel op de Cloud gericht. Microsoft zou dus Windows 8 kwijt willen ten gunste van Windows 9, om zo het slechte imago van 8 te doen vergeten.

De verwachting is dat Microsoft in april op zijn Build-ontwikkelaarsconferentie met een officiële aankondiging komt. Het besturingssysteem zou in april volgend jaar gereed kunnen zijn.




Kanaal van de Maand - 2

Auteur: K1pje

Top

In navolging van het artikel in de vorige nieuwsbrief, is er ook deze maand een YouTube kanaal of Podcast welke uitgelicht wordt. Zoals redacteur OctaFish in de vorige nieuwsbrief beschrijft: deze twee media zijn bedoeld om informatie te verspreiden welke op andere apparaten dan televisies bekeken kan worden. Omdat het aanbod aan Podcasts en kanalen enorm is, komt er maandelijks één kanaal aan bod en wordt hier meer over verteld.

Dit keer wordt een kanaal besproken van een organisatie die vrijwel iedereen kent: de Consumentenbond. De Consumentenbond zet zich vanzelfsprekend in voor de consument. Dit doet zij niet enkel door te bemiddelen bij klachten, maar ook middels producttesten. De vergelijkingstesten zijn onder andere terug te vinden in de Consumentengids, maar veel informatie is ook gewoon gratis terug te vinden op de website van de Consumentenbond: http://www.consumentenbond.nl

Helemaal mooi is het wanneer je beseft dat de Consumentenbond ook uitgebreid allerlei elektronica test. Dus geen geworstel meer met Engelstalige testverslagen die je niet goed kunt begrijpen. Gewoon lekker makkelijk alle informatie in het Nederlands.

Nu heeft de Consumentenbond ook een heus YouTube kanaal: http://www.youtube.com/user/consumentenbond

Misschien wat voorspelbaar, maar van een deel van de producttests maakt de Consumentenbond ook filmpjes. En deze filmpjes zijn dus terug te vinden op het bovengenoemde Youtube kanaal. Een groot pluspunt wat genoemd mag worden zijn de duidelijke filmpjes over de testmethodes die toegepast worden.

februari 2014: kanaal2..png

Dus ben je op zoek naar praktische informatie over producten, of wil je gewoon ontspannen kijken wat voor nieuwe snufjes er allemaal op de markt zijn? Dan is het kanaal van de Consumentenbond een goede aanvulling op de gebruikelijke informatie die al beschikbaar was op hun website!




Postvak-in

Auteur: Redactie

Top

In onze vaste rubriek beantwoorden we vragen aan de hand van onze nieuwsbrief en plaatsen we reacties van onze lezers.


Beste mensen,

Porrelaar geeft in de laatste nieuwsbrief een tip voor beginners, om de Windows Verkenner twee maal op het scherm te krijgen. Hartstikke handig natuurlijk. En het kan nóg handiger: het verplaatsen van de Verkenner (of een willekeurig ander programma) gaat heel makkelijk door de Windows-toets ingedrukt te houden en dan de pijltjestoetsen te gebruiken:

- pijltje naar links: programma wordt verplaatst naar de linkerhelft van het beeldscherm
- pijltje naar rechts: programma wordt verplaatst naar de rechterhelft van het beeldscherm
- pijltje naar boven: programma wordt (weer) beeldvullend
- pijltje naar beneden: programma wordt niet meer beeldvullend of wordt geminimaliseerd.

Met ook de Shift-toets erbij ingedrukt kan een programma makkelijk verplaatst worden tussen twee beeldschermen.

Vriendelijke groet,

Ferdinand.

Ferdinand, hartelijk dank voor de aanvulling op het artikel van porrelaar.

Redactie

Beste redactie,

Al jaren gebruik ik xplore² lite (gratis) om bestanden te kunnen overhevelen van mappen.

http://zabkat.com/x2down.htm

Ondanks dat je toch een klein programmaatje moet installeren is het zeer de moeite waard. Waarschijnlijk zijn jullie wel op de hoogte hiervan, maar ik dacht zal het toch nog even doorgeven, je weet maar nooit.

Vriendelijk groeten,
Martha Posthumus

Inderdaad kennen wij dit programma Martha,
Het is een helder en grafisch mooi in elkaar stekende bestandsverkenner.

De bedoeling van de auteur was om aan te geven dat met Windows verkenner (weliswaar met dubbel geopend scherm) er net zo goed te werken valt als met een extern programma. Dat laatste had je al wel begrepen.

Voor het geval dat er onder onze lezers belangstelling bestaat om xplore² lite te gebruiken geef ik hier de goede link naar de (gratis) lite-versie:

http://www.zabkat.com/x2lite.htm

Redactie

Geachte redactie,

Als Windows XP gestopt wordt, hoe zit dat met Windows Vista? Ik heb Windows 7, mijn echtgenote heeft Vista. Wordt Vista nog gesupport? Misschien heb ik dit onderdeel gemist in uw nieuwsbrief.

Manuel G.

Dat is best een goeie vraag Manuel,
We staan er eigenlijk niet bij stil, maar er zijn inderdaad nog Vista-gebruikers en die mogen we niet in de kou laten staan.

In feite is de ondersteuning van Vista, op het uitbrengen van veiligheidsupdates na,  al gestopt. Dat wil zeggen dat er geen nieuwe ontwerpen en features meer aan het besturingssysteem worden toegevoegd. Ook nieuwe versies van Internet Explorer worden al vanaf 10 april 2012 niet meer voor Vista uitgebracht. De algehele beëindiging van dit besturingssysteem zal 11 april 2017 plaats vinden.

Kijk voor meer info op:
http://support.microsoft.com/lifecycle/search/default.aspx?alpha=Vista

Redactie