deel tekst uit brief in bestandsnaam

Status
Niet open voor verdere reacties.

arnoo7

Gebruiker
Lid geworden
24 nov 2014
Berichten
79
Hallo,

Ik had gister al een berichtje geprobeerd te plaatsen maar kan hem nergens terugvinden :o Ik ben me sinds kort aan het verdiepen in macro's. Ik heb een vraagje waar ik niet uitkom. Ik wil aan het eind van een macro in Word het document opslaan. De naam van het document moet echter uit de brief gehaald worden.

In de onderwerpregel van de brief staat een nummer. Dit nummer wil ik terug laten komen in de naam van het document. Het nummer is altijd wel goed te herkennen want het volgt altijd na een vaste lettercombinatie. (er een paar lettercombinaties, maar als hij voor 1 werkt ben ik al een eind)

Dus vb: Onderwerp: levering bestelling klant Jansen, VVK 12345

Het bestand zou dan: "levering 12345.doc" moeten gaan heten. Het nummer heb ik nodig voor de archivering. Ik zat er dus aan te denken op zoek te gaan naar de lettercombinatie en dan de 2e t/m de 6e positie in de bestandsnaam op te nemen. Als ik dit met een macro echter opneem pakt hij de "12345" als hard gegeven. Terwijl deze natuurlijk per brief verschilt. Dus ik ben op zoek naar hoe je hier een relatieve verwijzing van kan maken.

Iemand een idee?
 
Kijk eens in VBA naar de Left, Right en Mid functies.
 
Veel te ingewikkeld...
Code:
Sub Maak_Naam()
Dim sq() As String, st() As String, sNaam As String
Dim j As Integer

    sq = Split(ActiveDocument.Content, vbCr)
    For j = 0 To UBound(sq)
        If Left(sq(j), 19) = "Onderwerp: levering" Then
            st = Split(sq(j), " ")
            sNaam = "levering " & st(UBound(st)) & ".doc"
            Exit For
        End If
    Next j
    MsgBox "De bestandsnaam is geworden: " & sNaam & "."
    
End Sub
 
Beiden bedankt voor jullie reactie. Hier ga ik vanavond eens even met stoeien. Ik laat het resultaat weten!
 
Even een kleine aanvulling dan op de macro:

Hij leest de complete tekst van het document in een matrix variabele (sq), waarbij elke alinea in een eigen positie in de matrix wordt opgeslagen. De macro veronderstelt dus dat de tekst "Onderwerp: levering bestelling klant Jansen, VVK 12345" in een aparte alinea staat.

Tweede aanname: De alinea begint met de tekst "Onderwerp: levering. ALs die tekst wordt gevonden, wordt de alinea gesplitst op basis van spaties in de tekst. Hiervoor wordt een nieuwe matrix variabele (st) gebruikt.

Derde aanname: het nummer ("12345" in het voorbeeld) staat altijd achteraan in de alinea. En zonder punt aan het eind. De bestandsnaam (nummer) wordt uit de laatste positie uit de matrix gehaald.

Als aan deze voorwaarden wordt voldaan, zal de macro goed werken. Zo niet, dan moet je wat aanpassen. Wat, kan ik uiteraard zonder voorbeeld niet zeggen.
 
:thumb: Super, dit is wat ik zocht. Ik heb nog even gevogeld op een kleine aanpassing. Het document voldeed namelijk niet aan de derde aanname. Na het nummer volgen een paar tabs en dan klantgegevens. Daarom zag hij dit als 1 blok. Dit heb ik op weten te lossen door een extra variabele "Nummer" te maken. Mocht er iemand met iets soortgelijks zitten:

Na: st = Split(sq(j), " "), ben ik verder gegaan met:
Nummer = Left(st(6), 5)
sNaam = "levering " & Nummer & ".doc"


Hiermee pak je van het 6e "blokje" uit de matrix de 5 meest linkse karakters

Bedankt!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan