Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VBA] Probleem met snelheid eigen Excel formules (ADO)

Pagina: 1
Acties:
  • 170 views sinds 30-01-2008
  • Reageer

  • -d-
  • Registratie: November 2003
  • Laatst online: 20-11 14:57
Ik heb een probleem met een aantal eigen geschreven formules in Excel.

De eigen geschreven formules halen via ADO/SQL de waarde op uit een access database.
De Excel sheets draaien deze formules >100 keer (per sheet), dus is het belangrijk dat deze zo snel mogelijk draaien. Op dit moment draaien ze nog vrij langzaam.

Ik verwacht zelf dat dit komt omdat in VBA ik elke keer opnieuw de connectie naar de (dezelfde) database opzet.

Ik open de ADO connectie naar de database in mijn formule(s) d.m.v. cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=<<naam van mdb file>>;" (cn is gedef. als ADODB.Connection)

Echter, ik heb het idee dat de connectie aan het eind van de functie gesloten wordt -- als ik bijvoorbeeld If cn.State = AdStateOpen toevoeg maakt het niets uit - hij geeft altijd aan dat hij niet open is - en ik hem dus opnieuw moet openen.

Aangezien dezelfde formule in meer dan 100 cellen staat moet ik dus een manier vinden op die connectie open te houden nadat ik hem de 1e keer open in een formule.
Weet iemand of deze mogelijkheid bestaat?

Hoop dat m'n vraag duidelijk genoeg is - zoniet dan hoor ik 't wel ;)

[ Voor 31% gewijzigd door -d- op 28-01-2008 14:47 ]


  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 25-10 14:28
De variabele waar je de connectie in hebt staan zet je in een module.

Bij het begin van de berekening controleer je of de connectie al gevuld is (niet null), zo niet dan maak je eerst verbinding.

Eventueel in de calculate event de verbinding weer sluiten.

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Hm, je probeert een soort multidimensionale database na te bouwen met Excel, en dan blijkt dat de performance niet zo goed is?

Je kan de data ook ophalen met data->import external data. Dat gaat vast makkelijker.

Connecties worden als het goed is ook automatisch hergebruikt, dus veel extra snelheid haal je waarschijnlijk niet bij het zelf recyclen. Bij het testen met veel eigen gemaakte functies scheelt het ook nog behoorlijk als de debugger/VBE open staat.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 18-11 21:18
"Nee joh!", met een eigen database functie kun je de waarden direct op de goede plekken in je rapport zetten. Mooie lichte rapporten zonder formules en flexibele layout.

NB: Deze vraag hoort in Office forum

[ Voor 10% gewijzigd door Bolukan op 29-01-2008 00:31 ]