Gegevens vanuit Excel ophalen in Userform

Status
Niet open voor verdere reacties.

sanderc

Gebruiker
Lid geworden
7 aug 2009
Berichten
85
Hallo beste VBA experts,

Ik ben bezig om enkele documenten te maken welke ik gezamenlijk wil gaan gebruiken. voor deze toepassing heb ik een Excel document welke ik gebruik als een soort van intake formulier. als deze (met formules) is gevuld sla ik deze als nieuw bestand op. Vervolgens open ik mijn Word sjabloon en haal doormiddel van een Userform met knoppen de gegevens op uit dit Excel bestand en plaats de gegevens in textboxen. Dit werkt op zich prima. echter zijn er enkele cellen die opgemaakt zijn in Excel als getal of als valuta. Alleen deze worden weer als tekst geplaatst in de textbox. is het mogelijk om de opmaak vanuit Excel te behouden? ik gebruik voor het ophalen en vervolgens plaatsen in Word de volgende codes.

Code:
Private Sub AutomateExcel(ByVal strPath As String)
Dim objExcel As Object
Dim objWorkbook As Object

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
Set objWorkbook = objExcel.workbooks.Open(strPath)
Call ReadData(objWorkbook)
objExcel.Application.Quit


End Sub
Private Sub ReadData(ByRef objWorkbook As Object)
Dim i As Integer

TBnaam.Value = objWorkbook.Sheets(1).Range("B3").Value
TBachternaam.Value = objWorkbook.Sheets(1).Range("C3").Value
TBprijs.Value = objWorkbook.Sheets(1).Range("D3").Value
TBbesparing.Value = objWorkbook.Sheets(1).Range("E3").Value


End Sub

Private Sub maakofferte_Click()
Me.Hide
    RangeMyBookmark "naam", Me.TBnaam.Text
    RangeMyBookmark "achternaam", Me.TBachternaam.Text
    RangeMyBookmark "prijs", Me.TBprijs.Text
    RangeMyBookmark "besparing", Me.TBbesparing.Text
    
    ActiveDocument.Fields.Update
Unload Me
End Sub

Private Sub RangeMyBookmark(sBm As String, sCtl As String)
Dim oRange As Word.Range
    With ActiveDocument
       Set oRange = .Bookmarks(sBm).Range
           oRange.Text = sCtl
           .Bookmarks.Add sBm, oRange
       Set oRange = Nothing
    End With
End Sub
 
Lees die cellen eens met .Text in plaats van .Value
 
Graag gedaan.
Toch even een kleine verduidelijking.
Die .Value geeft je de daadwerkelijke waarde en .Text geeft deze zoals je het in de cel ziet.
 
Laatst bewerkt:
Graag gedaan.
Toch even een kleine verduidelijking.
Die .Value geeft je de daadwerkelijke waarde en .Text geeft deze zoals je het in de cel ziet.

Zo bedoel ik het inderdaad. sorry met 'daadwerkelijke waarde' maakte ik het niet duidelijker :D
 
Vanuit Word gegevens uit een Excel-bestand lezen doe je zó:

Code:
Sub M_snb()
  with getobject("G:\OF\Voorbeeld.xlsx")
    sn=.sheets(1).usedrange
    .close 0
  end with
End Sub

De Array-variable sn bevat nu alle gegevens uit het eerste werkblad van het Exce-lbestand.

Werk in Word VBA nooit met bookmarks, die zijn nl. voor gebruikers die VBA niet machtig zijn en dus alleen gebruik kunnen maken van de graische User Interface (GUI) van Word.
Voor de VBA-vaardigen bevat Word DocVariables (een van de 'velden'). Die zijn veel flexibeler en op een onbeperkt aantal plaatsen in een document te plaatsen.
 
Laatst bewerkt:
Vanuit Word gegevens uit een Excel-bestand lezen doe je zó:

Code:
Sub M_snb()
  with getobject("G:\OF\Voorbeeld.xlsx")
    sn=.sheets(1).usedrange
    .close 0
  end with
End Sub

De Array-variable sn bevat nu alle gegevens uit het eerste werkblad van het Exce-lbestand.

Werk in Word VBA nooit met bookmarks, die zijn nl. voor gebruikers die VBA niet machtig zijn en dus alleen gebruik kunnen maken van de graische User Interface (GUI) van Word.
Voor de VBA-vaardigen bevat Word DocVariables (een van de 'velden'). Die zijn veel flexibeler en op een onbeperkt aantal plaatsen in een document te plaatsen.

Beste SNB, dankjewel voor je toevoeging en mogelijk verbetering van mijn code. maar dan heb ik wel wat meer hulp nodig om het geheel werkend te krijgen. met de aangereikte code haal ik alle gegevens uit een vrij te kiezen Excel bestand op? ik heb nu op mijn userform een knop gemaakt 'Kies bestand'. hierbij kan ik dus het betreffende Excel document kiezen welke hij moet inladen.

welke code moet ik dan gebruiken om vervolgens aan te geven welke textbox gevuld moet worden door welke cel uit Excel?

vervolgens heb ik een knop 'Maak bestand'. welke code moet ik dan gebruiken om aan te geven welke textbox waar in het word document (DocVariables) moet geplaatst worden?

Als bovenstaande beter kan als wat ik nu heb hoor ik het graag.
 
Kun je svp het overbodige citaat uit je bijdrage halen en voortaan de juiste knop om te reageren (+reageer op bericht) gebruiken ?

De zin van het Userform ontgaat me.

Om een Excelbestand te kiezen :

Code:
Sub M_snb()
  with application.filedialog(3)
    if .show then
      with getobject(.selecteditems(1))
        sn=.sheets(1).usedrange
        .close 0
      end with
    end if
  end with
End Sub

Voor een antwoord op je overige vragen moet je het Worbestand plaatsen.
 
Laatst bewerkt:
excuses als ik verkeerd reageerde. dit leek mij duidelijker aangezien je dan ziet waar dit een antwoord op is. maar bij deze op de juiste wijze.

De functie van het Userform is dat de opgehaalde waardes nogmaals gecontroleerd kunnen worden en eventueel aangepast kunnen worden zodat deze juist in het Word document geplaatst worden. Ik heb voor deze test een word document waarin verder geen tekst is opgenomen. daar staan voor nu alleen de Bookmarks in en eventueel een REF tekstveld als ik de tekst meerdere keren wil plaatsen. Dus toevoegen daarvan is niet heel zinvol lijkt me. mocht dit wel nodig zijn kan dat uiteraard.
 
Lijkt me een vreemd document zo zonder tekst.
Dan kun je beter de Excelgegevens afdrukken.
 
Beste SNB,

Wat ik probeerde te zeggen is dat ik mijn codes altijd eerst in een testdocument maak, test en uitwerk om ze vervolgens te kopiëren naar mijn originele bestand. vandaar dat ik nu een leeg word document heb als test.

maar in de bijlage het test document zoals ik bedoelde met daarin mijn test Userform.
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan