Probleemsituatie:
Excel heeft een bug die maakt dat je niet meer text kan linken dan 255 tekens, met verschillende workbooks, die gesloten zijn (dus niet openstaan). Dit is opgelost in de 2007-versie. Maar op het werk loopt dit niet zo snel i.v.m. upgraden.
Oplossing hiervoor:
Heb op het net gezocht, en ik benader nu de cell via een ADO-connectie, naar die cell, en dit via de volgende formule interface:
Dit heeft het nadeel, dat je eerst je cell selecteert bij het invoeren van deze formule. en daarna " " plaatst rond de range die excel heeft geselecteerd
Voorbeeld
Moest dit enkel een 'ongemak zijn', dan zou ik dit zo laten. Er is echter nog een ander nadeel. Eigenlijk werk je met text ipv links. Dus ,als een cell waarde verandert (opschuift), past excel deze niet aan.
Dit zou hij wel kunnen doen als ik in de formule de range kan plaatsen als range en niet in de formule als 'als string'.
Mogelijke oplossing:
Nu heb ik geprobeerd om het adress te weten te komen van een range, dit gaat voor bijvoorbeeld
Dit geeft me het probleem dat hij zijn adress niet kan weergeven als het workbook gesloten is.
Hetzelfde geldt voor de formule
Daarom heb ik eigenlijk de volgende oplossing bedacht:
Deze code vraagt twee parameters: de cell, vanwaar hij wordt uitgevoerd & de range die hij zou moeten ophalen.
Doordat als een workbook gesloten is, ook de formula verandert (dan komt het volledige pad te staan in de formulebalk), kan ik altijd de filename extracten.
Problemen bij het vinden van de oplossing
Ik moet bij mijn laatste recentse oplossing (twee parameters), altijd de huidige cell meegeven vanwaar hij wordt uitgevoerd.
Gevraagd
Bestaat er geen manier om de huidige cell, die formule uitvoert, op te roepen?
Of hoe ik daar in hemelsnaam op google? heb gezocht op:
Excel.Range as String vba
Excel.Range and ADO vba
Range text 255 char ADO vba
Excel heeft een bug die maakt dat je niet meer text kan linken dan 255 tekens, met verschillende workbooks, die gesloten zijn (dus niet openstaan). Dit is opgelost in de 2007-versie. Maar op het werk loopt dit niet zo snel i.v.m. upgraden.
Oplossing hiervoor:
Heb op het net gezocht, en ik benader nu de cell via een ADO-connectie, naar die cell, en dit via de volgende formule interface:
code:
1
| =copytextfrom(range as string) |
Dit heeft het nadeel, dat je eerst je cell selecteert bij het invoeren van deze formule. en daarna " " plaatst rond de range die excel heeft geselecteerd
Voorbeeld
code:
1
| =copytextfrom("'C:\[Book7.xls]Sheet1'!E6") |
Moest dit enkel een 'ongemak zijn', dan zou ik dit zo laten. Er is echter nog een ander nadeel. Eigenlijk werk je met text ipv links. Dus ,als een cell waarde verandert (opschuift), past excel deze niet aan.
Dit zou hij wel kunnen doen als ik in de formule de range kan plaatsen als range en niet in de formule als 'als string'.
Mogelijke oplossing:
Nu heb ik geprobeerd om het adress te weten te komen van een range, dit gaat voor bijvoorbeeld
code:
1
2
| Dim rng as Range msgbox rng.LocalAddress |
Dit geeft me het probleem dat hij zijn adress niet kan weergeven als het workbook gesloten is.
Hetzelfde geldt voor de formule
Daarom heb ik eigenlijk de volgende oplossing bedacht:
code:
1
2
3
| Function asText(thisCell As Range, inp As Range) As String asText = thisCell.FormulaLocal End Function |
Deze code vraagt twee parameters: de cell, vanwaar hij wordt uitgevoerd & de range die hij zou moeten ophalen.
Doordat als een workbook gesloten is, ook de formula verandert (dan komt het volledige pad te staan in de formulebalk), kan ik altijd de filename extracten.
Problemen bij het vinden van de oplossing
Ik moet bij mijn laatste recentse oplossing (twee parameters), altijd de huidige cell meegeven vanwaar hij wordt uitgevoerd.
Gevraagd
Bestaat er geen manier om de huidige cell, die formule uitvoert, op te roepen?
Of hoe ik daar in hemelsnaam op google? heb gezocht op:
Excel.Range as String vba
Excel.Range and ADO vba
Range text 255 char ADO vba