[Excel 2003 NL] Externe cellinhoud refereren aan interne cel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • OfNoAvail
  • Registratie: November 2001
  • Laatst online: 10-09 17:35

OfNoAvail

Beter een half gezegde...

Topicstarter
Mijn 'uitdaging' ligt in de lijn van het volgende topic http://gathering.tweakers.net/forum/list_messages/1138620

Ik heb de oplossing zoals daar beschreven is toegepast, ik zal hieronder een korte uitleg geven over wat ik gedaan heb.

Ik heb een werk xls waarmee ik externe waarden wil binnen halen.
Middels een stukje VBA code lees ik de namen van de aanwezige bestanden in een map uit en plaats deze regel voor regel in kolom A.

Daarmee krijg ik het volgende:

Cel A1 bevat "Map1.xls"
Cel A2 bevat "Map2.xls"

Nu moet ik per bestand dezelfde cel uitlezen naar mijn werk xls.

Als ik de volgende formule gebruik:
code:
1
=TEKST.SAMENVOEGEN("'C:\voorbeeld\dataXls\[Map1.xls]Blad1'!$B$2")


Krijg ik de juiste uitkomst. Gewoon de inhoud van cel B2 van Map1.xls op werkblad "blad1"

Ter controle heb ik eerst een formule gemaakt waarmee ik exact dezelfde formule als hierboven tekstueel samenvoeg
code:
1
=TEKST.SAMENVOEGEN("'C:\voorbeeld\dataXls\[";A1;"]Blad1'!$B$2")

Dit gaat dus goed...

Nu begrijp ik dat ik met de functie INDIRECT deze bovenstaande formule uit kan laten voeren, ik maak dan dus de volgende formule:
code:
1
=INDIRECT(TEKST.SAMENVOEGEN("'C:\voorbeeld\dataXls\[";A1;"]Blad1'!$B$2");WAAR)


Nu krijg ik echter #VERW! als resultaat... er gaat dus iets mis... en dat terwijl hij letterlijk dezelfde formule (maar dan direct vanuit een cel uitgevoerd en niet eerst tekstueel samengesteld) wel goed uitvoerd.

Hopelijk ben ik duidelijk genoeg...Wie kan mij helpen?

Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 01:06

Reptile209

- gers -

Op deze site staat dat deze constructie alleen werkt als het workbook dat je wil benaderen open staat. Een klein testje hier wijst hetzelfde uit: als het andere bestand niet is geopend, krijg ik een #REF fout. Zodra ik 'm wel open gaat het goed.
Je zal dus bijv. een macro mee moeten laten lopen die de bestanden in kwestie opent.

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

Verwijderd


Acties:
  • 0 Henk 'm!

  • OfNoAvail
  • Registratie: November 2001
  • Laatst online: 10-09 17:35

OfNoAvail

Beter een half gezegde...

Topicstarter
Ik heb het opgelost door alles d.m.v. VBA-code een voor een te openen, kopieren en te sluiten.
Het is niet erg snel, maar werkt wel.

Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 01:06

Reptile209

- gers -

Wellicht een tip om het één en ander (iets) te versnellen: schakel de screen-update uit tijdens je macro. Dat scheelt een stuk rekentijd.

Visual Basic .NET:
1
2
3
4
5
6
7
8
'Screenupdate uitschakelen voor langdurige multi-file bewerking
application.screenupdating = false
...
'Voortgang weergeven voor gebruiker (in de statusbalk)
screenupdating.statusbar = "processing sheet 1 van " & TotaalAantalFiles
...
'Screen update weer inschakelen aan het einde!
application.screenupdating = true

Zo scherp als een voetbal!