Data op halen uit TXT bestand

Status
Niet open voor verdere reacties.

vibor

Gebruiker
Lid geworden
25 mrt 2016
Berichten
45
Hoi,

Onze technici moeten na het werk een formulier invullen waaronder de NAW gegevens en andere klant info.
Veel van deze info is echter al aanwezig op de PC van de technicus in de klantenmap. In de klantenmap staan de klanten in sub directories met de naam van het projectnummer een tekst bestandje onder de naam KLANTGEGEVENS.TXT
Dus in dit voorbeeld:
C:\KLANTEN\123456-01\KLANTGEGEVENS .TXT

In dat bestandje staat bijvoorbeeld de volgende data:
[PROJECT]
projectnummer=123456-01
naam=Hotel de Appel
adres=Appelstraat 4
plaats=Appeldam
contactpersoon=Jan de Appel
[INSTALLATIE]
type=Appelmoeszeef

De opbouw is altijd het zelfde.

Is het mogelijk om in het formulier een macro 'Data ophalen' te maken waarbij je een veld 'Klantnummer' in moet vullen waarna in het formulier de klant gegevens worden gevuld op de plaatsen waar ik bookmarks plaats, vanuit het TXT bestand?

Als ik even op weg geholpen wordt met direct de juiste aanpak, dan kom ik een heel eind denk ik.
Ik kan ook zo geen voorbeelden vinden.
Bij voorbaat heel veel dank.

Grt. Vib.
 
Laatst bewerkt:
Ja, dat kan. Maar je geeft wel érg weinig informatie. Blijkbaar heb je al een document/sjabloon met een formulier waarin dat moet worden ingevuld, dus daar hangen dan al procedures/macro's onder. Wat wil je precies weten?
 
Hoi AccesGuru,

Dank voor je reactie, excuus als de vraag niet duidelijk is. Het behang had ik idd weggelaten. Het gaat om een onderhoudsformulier. Daar staan technische vragen op die met JA/NEE/NVT beantwoord moeten worden en opmerkingen velden om defecten aan te geven. Die velden moeten met ieder onderhoud opnieuw ingevuld worden. Deze komen uiteindelijk als PDF bij de klant en op de zaak in het archief.

De algemene gegevens (NAW) moeten ze nu steeds over tikken terwijl die ook op hun PC staan. Dat stukje wil ik automatiseren, scheelt tijd ergernis en fouten.

Ik dacht aan bovenstaande, maar nog mooier zou zijn via een menu waarbij je met een knop kiest voor 'GEGEVENS OPHALEN' na het invullen van het klantnummer, en dan het formulier met DocVariable vullen. Ik mis echter de kennis om in een TXT bestand die op een vaste plaats staat, in een map opgebouwd uit het klantnummer de informatie uit te halen.

Dat ophalen zal met iets als
With GetObject("C:\KLANTEN\123456-01\KLANTGEGEVNS .TXT")
moeten gebeuren denk ik.

Grt. Vincent
 
Laatst bewerkt:
Daar kom je een heel eind mee :). Zelf werk ik met een ini file die je uitleest. Die ziet er zo'n beetje uit zoals jouw bestand, waarbij je met groepen werkt waar je velden uit ophaalt. Het principe staat hier uitgelegd.
 
...de basis is er.

Dank voor de suggesties tot nu toe.
Ik ben al een heel eind gekomen, maar heb nog ene beetje hulp nodig.

Het bestand is idd een INI formaat waaruit gelezen moet worden, dat bracht mij ook bij de juiste code

Ik heb een commandbutton gemaakt met de volgende code er onder, deze werkt op de eerste 3 velden in het test bestand

Code:
Private Sub CommandButton1_Click()

' Inlezen data


Dim regnr As String
ActiveDocument.Unprotect

regnr = InputBox("Geef het projectnummer op:")

Dim bedrijfsnaam As String
Dim bedrijfadres As String
Dim bedrijfsplaats As String
Dim apparaat As String
Dim contactpersoon As String

bedrijfsnaam = System.PrivateProfileString("C:\KLANTEN\" & regnr & "\KLANTGEGEVENS.TXT", "PROJECT", "naam")
    Set BMRange = ActiveDocument.Bookmarks("knaam").Range
    BMRange.Text = bedrijfsnaam
    ActiveDocument.Bookmarks.Add "knaam", BMRange

bedrijfsadres = System.PrivateProfileString("C:\KLANTEN\" & regnr & "\KLANTGEGEVENS.TXT", "PROJECT", "adres")
    Set BMRange = ActiveDocument.Bookmarks("kadres").Range
    BMRange.Text = bedrijfsadres
    ActiveDocument.Bookmarks.Add "kadres", BMRange
    
bedrijfsplaats = System.PrivateProfileString("C:\KLANTEN\" & regnr & "\KLANTGEGEVENS.TXT", "PROJECT", "plaats")
    Set BMRange = ActiveDocument.Bookmarks("kplaats").Range
    BMRange.Text = bedrijfsplaats
    ActiveDocument.Bookmarks.Add "kplaats", BMRange


ActiveDocument.Protect Type:=wdAllowOnlyFormFields

End Sub

Het formulier is uiteraard een beveiligd formulier.
Helaas vallen de invulvelden tussen de bookmarks weg na de run.
Heeft iemand enig idee hoe ik die terug kan zetten? Ook de bookmarks vallen weg, maar die maak ik weer opnieuw aan in de laatste regel van ieder blokje.
Kan dit ook voor een formulier veld?

Grt. Vibor
 

Bijlagen

  • Testformulier.docm
    25,1 KB · Weergaven: 35
Laatst bewerkt:
Ben er nog even mee bezig. Je werkwijze is m.i. niet correct, in ieder geval niet handig. Ik werk liever met DocVariables, die je in het document plaatst en steeds opnieuw vult.
 
Gegevens ophalen uit een txt-bestand doe je zó:

Code:
Sub M_snb()
  sn = Split(CreateObject("scripting.filesytemobject").opentexfile("C:Klanten\12345\klantgegevens.txt").readall, vbCrLf)
End Sub
gegevens wegschrijven naar documentvariabelen K, A en P doe je zó:
Code:
Sub M_snb()
  sn = Split(" klant adres plaats")

  For j = 1 To 3
    ActiveDocument.Variables(Mid("KAP", j, 1)) = sn(j)
  Next
  ActiveDocument.Fields.Update
End Sub
Gecombineerd:
Code:
Sub M_snb()
  sn = Split(CreateObject("scripting.filesytemobject").opentexfile("C:Klanten\12345\klantgegevens.txt").readall, vbCrLf)

  For j = 1 To 3
    ActiveDocument.Variables(Mid("KAP", j, 1)) = sn(j)
  Next
  ActiveDocument.Fields.Update
End Sub
 

Bijlagen

  • formulier_001.docm
    28,3 KB · Weergaven: 23
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan