Waarde uit cel in Excel automatisch invullen in Word tekstvak?

Status
Niet open voor verdere reacties.

MATA97

Gebruiker
Lid geworden
25 okt 2017
Berichten
22
Hallo,

Ik ben op zoek naar de code om een waarde uit een cel in excel te kunnen zetten in een word tekstvak.
Het tekstvak heb ik benoemd met "Testdatum" en in excel is de Range ("B3")

Kan iemand me helpen?
 
Waarom een tekstvak en waarom geen documentvariabele ?
 
Kijk eens naar "afdruk samenvoegen" in Word tabblad verzendlijsten
 
Je kiest eerst iets uit de lijst onder afdruk samenvoegen en daarna onder Adressen Selecteren: bestaande lijst gebruiken en dan zoek je je Excel bestand op
 
Laatst bewerkt:
Je kiest eerst iets uit de lijst onder afdruk samenvoegen en daarna onder Adressen Selecteren: bestaande lijst gebruiken en dan zoek je je Excel bestand op

Heb ik gedaan maar dan komt er gewoon een wit document?
 
Zet deze macro eens in je Wordbestand.
Pas het pad en de naam van het Excelbestand aan.
Laat de macro lopen (in de VBEditor F5 ).

Code:
Sub M_snb()
    ActiveDocument.Content = String(20, vbCr)
    ActiveDocument.Fields.Add ActiveDocument.Paragraphs(1).Range, 64, "testdatum"
    ActiveDocument.Variables("testdatum") = "aaaaaaaa"
    With GetObject("G:\OF\voorbeeld.xlsx")
        ActiveDocument.Variables("testdatum") = .sheets(1).Cells(3, 2).Value
        .Close 0
    End With
    ActiveDocument.Fields.Update
End Sub

SVP niet quoten/citeren !
 
Bedankt snb,

Net geprobeerd maar de error vliegt rond mijn oren. Ik denk dat ik het juist heb aangepast?

Ik heb mijn volledige code erin gezet:
Module 1:

Sub cmbRapport_Click()
If ActiveSheet.Range("B3").Value = "x" Then
Call Rapportinvullenmettabel1
End If
End Sub

Module 2:
Function Rapportinvullenmettabel1()
Dim doc1 As Word.Document
Dim appword As Word.Application

Set appword = GetObject(, "word.application")
Set appword = New Word.Application
appword.Visible = True

ActiveDocument.Content = String(20, vbCr)
ActiveDocument.Fields.Add ActiveDocument.Paragraphs(1).Range, 64, "TESTDATUM"
ActiveDocument.Variables("TESTDATUM") = "aaaaaaaa"
With GetObject("C:\Users\Arno\Desktop\MULTI EXCEL ICT\IndaChem Liquids testrapport1.dotx")
ActiveDocument.Variables("TESTDATUM") = .Sheets(1).Cells(3, 2).Value
.Close 0
End With
ActiveDocument.Fields.Update


End Function


End Sub
 
Zet je code even tussen ##, dat leest makkelijker:

Code:
Sub cmbRapport_Click()
If ActiveSheet.Range("B3").Value = "x" Then
Call Rapportinvullenmettabel1
End If
End Sub

Module 2:
Function Rapportinvullenmettabel1()
Dim doc1 As Word.Document
Dim appword As Word.Application

Set appword = GetObject(, "word.application")
Set appword = New Word.Application
appword.Visible = True

ActiveDocument.Content = String(20, vbCr)
ActiveDocument.Fields.Add ActiveDocument.Paragraphs(1).Range, 64, "TESTDATUM"
ActiveDocument.Variables("TESTDATUM") = "aaaaaaaa"
With GetObject("C:\Users\Arno\Desktop\MULTI EXCEL ICT\IndaChem Liquids testrapport1.dotx")
ActiveDocument.Variables("TESTDATUM") = .Sheets(1).Cells(3, 2).Value
.Close 0
End With
ActiveDocument.Fields.Update


End Function


End Sub

Dit ziet er toch wat anders uit dan de code van snb, bovendien heb je 'midden' in je code een End Sub staan.
 
De eerste end sub zit in mijn module 1 en de andere stukken zitten in module 2.
Ben ik vergeten stukken aan te passen in snb zijn code?
 
@JanBG, maak gebruik van inspringpunten dat leest nog makkelijker.;)
 
Nee, je hebt mijn bericht niet goed gelezen.
Zet deze code, zonder enige aanpassing behalve de volledige naam van het Excelbestand, in een Word document
 
Laatst bewerkt:
Ah oeps ja fout begrepen. Moet ik nog iets hebben staan in excel ook dan? Vraagje over uw de code waarom string (20,vbCr)?
 
Het handigst is om een Wordbestand aan te maken en die op te slaan als "G:\OF\voorbeeld.docx".
Zet in dat bestand op de plek waar je het gegeven uit Excel wil plaatsen een veld van het type docvariable:

- ctrl-F9
- Docvariable testdatum : het resultaat ziet eruit als { DOCVARIABLE testdatum }
- sla het bestand op en sluit het

Gebruik dan in Excel de volgende code:
Code:
Sub cmbRapport_Click()
  If ActiveSheet.Range("B3").Value = "x" Then
    with getobject("G:\OF\voorbeeld.docx")
      .variables("testdatum")=activesheet.cells(3,2)
      .fields.update
      .windows(1).visible=true
      .close -1
    end with     
  end if
End Sub
 
Beste Snb,

Super bedankt voor deze heel nuttige informatie. Nu heb ik per ongeluk in fout in de vraag gezet. B3 slaat erop dat als er een X staat het rapport wordt gemaakt in het word template. En daar moet dan in een tekstvak de data uit B4 komen. Nu kwam ik steeds elke keer X in mijn rapport wat dus niet klopt. Ik heb net proberen aanpassen maar toen was het error. Hebt u toevallig enig idee?

Alvast bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan