Symptomen
- Op een aantal momenten voert Excel een herberekening uit, ongeacht de manier waarop u de herberekening hebt ingesteld (Automatisch of Handmatig). Uw medewerkers hebben deze herberekeningen omzeild of tot een minimum weten te beperken. Echter, wanneer in een groot en ingewikkeld Excel-model een .txt- of een .csv-bestand moet worden geopend, lijkt een (zeer langdurige) herberekening onontkoombaar. Gebruikers klagen echter steen en been over onacceptabel lange wachttijden.
Remedie
- De herberekening is inderdaad onontkoombaar. De tijd die een herberekening vergt, kunt u echter tot een seconde beperken:
- Maak een macro in het grote Excel-model die een tweede Excel-programma start (in vaktermen: een tweede Excel-instantie) start:
Sub LeesBestandZonderWachttijd() Dim strPad As String Dim lngWaarde As Long strPad = "C:\............................ ") lngWaarde = Shell(strPad & "excel.exe " & _ """" & ThisWorkbook.path & _ "\CONVERTOR.XLSM" & """", 0)
NB1: Op de plaats van de stippeltjes vult u het pad naar de Excel-executable in.
NB2: In Office 2003 en oudere versies, moet u XLSM vervangen door XLS.
- Zorg er vervolgens voor dat de macro een of een paar seconde(n) wacht, zodat het bestand Convertor.xlsm zijn werk kan doen:
Application.Wait _ (TimeSerial _ (Hour(Now()), _ Minute(Now()), _ Second(Now()) + 3))
- Lees aan het einde van de macro de geconverteerde bestanden in, op de normale manier. De enige wijziging die u moet aanbrengen is, dat het inleesbestand niet meer NAAM.TXT of NAAM.CSV heeft, maar NAAM.xls of NAAM.xlsm (afhankelijk van de Office-versie die u gebruikt).
- Maak een lege werkmap die u opslaat onder de naam Convertor.xls (Office 2003 of ouder) of Convertor.xlsm (Office 2007 of recenter). Geef deze werkmap de volgende inhoud:
- Druk op [Alt+F11] om naar de programmeeromgeving te gaan.
- Dubbelklik aan de linkerkant van het scherm onder Microsoft Excel-objecten op ThisWorkbook.
- Voeg een routine in met twee opdrachten:
Sub Auto_Open() <opdracht 1> <opdracht 2> End Sub
- Vervang <opdracht 1> door de opdracht die u normaliter gebruikt om het .txt- of .csv-bestand te openen.
- Vervang <opdracht 2> door de opdracht ActiveWorkbook.SaveAs, waarbij u aangeeft dat u het bestand wilt opslaan met dezelfde naam, maar .txt of .csv wilt vervangen door .xls of .xlsx, en het bestand wilt opslaan als Excel-bestand.
Verdieping
Er wordt na het uitvoeren van bepaalde handelingen een niet-onderbreekbare herberekening gestart. De meest voorkomende situaties die een herberekening veroorzaken zijn situaties waarin u:
- een niet-Excel-bestand opent (zoals hierboven is beschreven).
- werkbladen, kolommen en/of rijen invoegt.
Deze herberekeningen kunt u doorgaans vermijden door vrije rijen en/of kolommen te gebruiken, en bij de opzet van het model al een aantal lege werkbladen in te voegen. Ontkomt u niet aan een invoegbewerking, voeg dan in één keer alle benodigde rijen of kolommen in. Dit resulteert is slechts één complete herberekening. Voegt u rijen en/of kolommen één voor één toe, dan moet u telkens op een integrale herberekening wachten.
- Werkbladen en/of kolommen verwijdert.
U kunt herberekening van de complete werkmap voorkomen door het werkblad of de kolom niet te verwijderen, maar leeg te maken (met de herberekingsmethode uiteraard ingesteld op Handmatig) en het werkblad of de kolom te verbergen. Let wel: verbergt u rijen (of maakt u ze weer zichtbaar) dan zal altijd een herberekening volgen.
Zie ook
Automatische en handmatige herberekeningen.
De opdracht Data, Parse.