• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Deel van bestandsnaam

Status
Niet open voor verdere reacties.

RichieL

Gebruiker
Lid geworden
29 nov 2018
Berichten
74
Ik heb een vraag betreft een een deel van het bestandsnaam laten zien in een cel. Om het bestandsnaam op te roepen heb ik de volgende code gebruikt

[XML]=DEEL(CEL("bestandsnaam");VIND.SPEC("[";CEL("bestandsnaam"))+1; VIND.SPEC("]";CEL("bestandsnaam"))-VIND.SPEC("[";CEL("bestandsnaam"))-1)[/XML]

Dit roept de volgende het bestandsnaam op, maar ik wil in Cel A1 eigenlijk alleen het stuk tussen de 2e - (minteken) en de . van .xls zien. Dus in het voorbeeld zou dit "201" zijn. Ik heb dit geprobeerd met LINKS en RECHTS functie, maar daar krijg ik een error op.

Wie zou me een zetje in de goede richting kunnen geven?
 

Bijlagen

Laatst bewerkt:
Je wilt dus alleen die 201 terug hebben?
 
Dat kan je het makkelijkst met een zelf gemaakte functie in VBA doen:
Code:
Function PBNR() As Integer
    PBNR = Split(Split(ActiveWorkbook.Name, "-")(2), ".")(0)
End Function

In A1 zet je dan:
PHP:
=PBNR()

Bekijk bijlage PAKBON-200313-201.xls
 
Waarschijnlijk doe ik iets verkeerd, maar hij werkt niet?!? (ook niet het bestand wat u heeft ge-upload)
 
Sta je macro's toe?
 
jazeker. ik krijg #NAAM?

Bij de bovenstaande oplossing kreeg ik een lege cel, wanneer ik hem iets aanpas krijg ik #NAAM? heb hem dan ook aangepast naar onderstaande

Code:
Sub nummer()
'
' nummer Macro
'
' Sneltoets: Ctrl+Shift+Z
'
    ActiveCell.FormulaR1C1 = "=PBNR()"
    Range("A1").Select
End Sub

Function PBNR() As Integer
    PBNR = Split(Split(ActiveWorkbook.Name, "-")(2), ".")(0)
End Function
 
De functie PBNR moet in een module staan.
 
Die heb ik daar staan, maar omdat het iedere keer een nieuw bestand is, wil ik eigenlijk met een "sneltoets" die =PBNR () funcite in cel A1 laten zetten en jou code in de module van de "persoonlijke marco" map zetten.
 
Dat kan niet.
Een Function hoort in een module van het actieve werkboek.
 
Maar waarom dan een functie gebruiken?
Dan kan je het toch ook zo doen:
Code:
Sub nummer()
[COLOR="#008000"]'
' nummer Macro
'
' Sneltoets: Ctrl+Shift+Z
'[/COLOR]
    ActiveCell.Value = Split(Split(ActiveWorkbook.Name, "-")(2), ".")(0)
    Range("A1").Select
End Sub
 
Laatst bewerkt:
Dankje. Wederom doe ik waarschijnlijk iets fout. Krijg een melding "het subscript valt buiten bereik"
 
Ik kan natuurlijk zo niet zien wat je gedaan hebt.
Plaats dus dat document.
 
Er staan vast geen twee streepjes in je bestandsnaam.
 
Dankje edmoor.
Ik heb hem voor elkaar, weet niet precies waar hij nu fout ging, maar ik heb een heel nieuw bestand gemaakt en met jou opmerkingen opnieuw het script erin gezet.
Hij doet het!
 
Code:
=SUBSTITUTE(MID(MID(@CELL("filename");SEARCH("[";@CELL("filename"))+1; SEARCH("]";@CELL("filename"))-SEARCH("[";@CELL("filename"))-1);15;100);".xls";"")

Doet het gevraagde en zie je gelijk waarom je de functie CEL(L) beter niet kan gebruiken. Alles wat tussen "" staat wordt door Excel als tekst gezien. Dit gaat dus niet automatisch mee als je een versie met een andere taal gebruikt. (is door een trucje ook nog wel te ondervangen) Maar waarom wil je de bestandsnaam of een een gedeelte ervan in een A1 hebben?

[edit] Mosterd na de maaltijd.:)
 
Laatst bewerkt:
Thanks VenA.
Dit komt omdat de output van het ERP systeem het bestandsnaam PAKON-DATUM-LOCATIEnummer geeft. En wil graag alleen het locatie nummer bovenin hebben ipv het hele bestandsnaam.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan