• 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.

VBA - Variabelen en grafiek vanuit Excel in Word plaatsen

Status
Niet open voor verdere reacties.

Pieter671

Gebruiker
Lid geworden
26 jun 2015
Berichten
100
Voor een Excel-tool dat ik aan het ontwikkelen ben, heb ik een uitdaging om verschillende variabelen en een grafiek (vanuit Excel) te koppelen, of beter gezegd te kopiëren, naar een Word document dat geïntegreerd is in het Excel-document.

In bijgevoegd eenvoudige voorbeeld zijn de verschillende variabelen en de grafiek opgenomen (zie gele velden), alsook het word document waarin de informatie moet worden verwerkt.

Mijn idee is, dat wanneer het word-document wordt geopend, de variabelen en de grafiek in de tekst van het Word-document met de juiste waarden wordt weergegeven.
Bij voorkeur als 'harde tekst' en de grafiek als 'Afbeelding (enhanced metabestand)'

Heeft iemand hier een VBA-oplossing voor?
 

Bijlagen

  • Voorbeeld Excel naar Word.xlsx
    34,2 KB · Weergaven: 14
1. Hoe dacht je dat zonder VBA te doen ?
2. Ik zie geen regel VBA in het Excel document.
3. Ik zie geen voorbeeld van een Worddocument
4. ik zie geen aanzet/idee/vraag over hoe de gegevens in Excel in het Worddocument terecht moeten komen
5. De opmerking 'niet-gekioppeld' lijkt me strijdig met het doel van je vraag.
6. Waarom wordt er überhaupt in Excel gewerkt ? Waarom niet alles gewooon in Word ?
 
1. Hoe dacht je dat zonder VBA te doen ?

Zonder VBA is het gewoon ctrl-c ctrl-v van het Excel naar Word.
Deze handeling wil ik graag automatiseren.
Je kan in het Word-document wel koppelingen aanbrengen naar betreffende cellen in Excel. Ook voor de grafiek. In bijgevoegd voorbeeld 2 heb ik dat gedaan.
Nadeel is wel dat zelfs met deze vier variabelen en één grafiek e.e.a. wel heel traag werkt. Opstarten van Word doet lang. Ook wordt dan iedere keer gevraagd bij het opstarten van het Word-document om de koppelingen bij te werken.

2. Ik zie geen regel VBA in het Excel document.

Deze heb ik niet opgenomen. Ik kan de waarden uit de cellen wel in een variabele stoppen, maar hoe gaan deze dan mee in de VBA naar Word?
In Word zou je dan met bijvoorbeeld zoeken/vervangen e.e.a. kunnen plaatsen.

3. Ik zie geen voorbeeld van een Word-document

Het Word-document is ingesloten in Excel. Zie cel B21. Dubbelklik en Word wordt geopend.

4. ik zie geen aanzet/idee/vraag over hoe de gegevens in Excel in het Word-document terecht moeten komen

Zie vraag 1 en 2

5. De opmerking 'niet-gekoppeld' lijkt me strijdig met het doel van je vraag.

Ik zoek juist naar een andere manier om informatie uit Excel naar vaste plaatsen in een Word-document te brengen.
Koppelingen werken niet goed. Althans is mijn ervaring. De uiteindelijke teksten in Word worden vervolgens weer in ander documenten gekopieerd. Dan mogen de koppeling niet meer aanwezig zijn.
De gebruikers van de tool zijn minder ervaren in Excel en Word.

6. Waarom wordt er überhaupt in Excel gewerkt ? Waarom niet alles gewoon in Word ?

Omdat dit eenvoudig weg niet in Word kan. De gebruiker moet in Excel e.e.a. doen. Het resultaat zijn een aantal waarden en een grafiek. Deze waarden en grafiek moeten worden overgenomen in Word.
 

Bijlagen

  • Voorbeeld Excel naar Word 2.xlsx
    35,9 KB · Weergaven: 9
Laatst bewerkt:
Hier wordt geen enkel Worddocument geopend.
Alles loopt natuurlijk sneller als Word geopend is en geopend blijft.
Je kunt beter met een workspace werken.
Nog eenvoudiger/sneller wordt het als je vanuit het Wordbestand de gewenste gegevens met VBA uit een 'hidden' Excelbestand haalt.

Gegevens zet je in Word met Docvariables.
Heb je al ooit eens met VBA gewerkt ?
 
Laatst bewerkt:
Het word-document betreft Object 3
Met VBA in word - of vanuit Excel naar Word - het ik nog geen ervaring. Ben ook nog maar een 'member' :cool:
Ik zal mij verdiepen in de doc-variabelen in Word.


Code:
Sub overzetten()

Dim var1, var2 As Integer
Dim var3, var4 As String
Dim grafiek As Object

var1 = Worksheets("Blad1").Range("C3")
var2 = Worksheets("Blad1").Range("C4")
var3 = Worksheets("Blad1").Range("C5")
var4 = Worksheets("Blad1").Range("C6")

ActiveSheet.ChartObjects("Grafiek 1").Activate
    ActiveChart.ChartArea.Copy
    
ActiveSheet.Shapes.Range(Array("Object 3")).Select

Selection.Verb Verb:=xlPrimary

'Hoe verder?

End Sub
 

Bijlagen

  • Voorbeeld Excel naar Word 2.xlsm
    42,9 KB · Weergaven: 8
Laatst bewerkt:
Als je de grafiek in Word plakt als koppeling, wat voor veld is er dan in Word zichtbaar ?
 
LINK Excel.SheetMacroEnabled.12 " ........... !Blad1![Voorbeeld Excel naar Word 2.xlsm]Blad1 Grafiek 1"
 
Dit had ik in gedachten.

Vanmiddag even gepuzzeld en e.e.a. opgezocht op internet.
Dit is het idee wat ik gedachten had.
Alles verloopt goed, het 'embedded' Word bestand wordt geopend, de tekst wordt geselecteerd, maar vervolgens worden de te vervangen tekstgedeelten niet gevonden.

Enig idee waar dat aan kan liggen?

Code:
Sub InsertTextInEmbeddedWordDoc()

    ' Declare variables
    Dim wdDoc As Object
    Dim objShape As Object
    Dim objOLE As Object
    Dim strText1, strText2, strText3, strText4 As String
        
    ' Get text from cells
    strText1 = Sheets("Blad1").Range("C3").Value
    strText2 = Sheets("Blad1").Range("C4").Value
    strText3 = Sheets("Blad1").Range("D5").Value
    strText3 = Sheets("Blad1").Range("C6").Value
    
    ' Set reference to the embedded object
    Set objShape = Sheets("Blad1").Shapes("Object 3")
    
    ' Activate the object and open the Word document
    objShape.OLEFormat.Activate
    Set objOLE = objShape.OLEFormat.Object
    objOLE.Activate
  
    ' Get reference to the Word document
    Set wdDoc = objOLE.Object
        
    ' Select the entire document
    wdDoc.Content.Select
    
    'Tot zo ver loopt de macro goed, maar de tekst om te vervangen wordt niet gevonden.
    'xxxxxxxxx find <variabele 1>
       Dim rng As Word.Range
        Set rng = wdDoc.Content
        If rng.Find.Execute(FindText:="<variabele 1>", MatchCase:=False, MatchWholeWord:=False, Forward:=True, ReplaceWith:=strText, Replace:=2, Wrap:=wdFindContinue) Then
            MsgBox "Tekst gevonden."
        Else
            MsgBox "Tekst niet gevonden."
        End If
    'xxxxxxxxxx

    ' Replace "Variabele1" with the text from cell A1

   wdDoc.Content.Find.Execute FindText:="<variabele 1>", ReplaceWith:=strText1, Replace:=2
   wdDoc.Content.Find.Execute FindText:="<variabele 2>", ReplaceWith:=strText2, Replace:=2
   wdDoc.Content.Find.Execute FindText:="<variabele 3>", ReplaceWith:=strText3, Replace:=2
   wdDoc.Content.Find.Execute FindText:="<variabele 4>", ReplaceWith:=strText4, Replace:=2
    
    ' Save and close the Word document
    wdDoc.Save
    wdDoc.Close
    
    ' Clean up memory
    Set wdDoc = Nothing
    Set objOLE = Nothing
    Set objShape = Nothing

End Sub
 

Bijlagen

  • Voorbeeld Excel naar Word 3.xlsm
    41,5 KB · Weergaven: 6
Probleem is nog niet helemaal opgelost (vervangen grafiek werkt nog niet).

Ik ben vrij ver gekomen met de code.
Het enige dat nog niet werkt, is dat de grafiek vervangen wordt in het Word-document.
Ik krijg 'm wel in het document gekopieerd!

Ook kreeg het kopiëren van de grafiek niet goed verwerkt in dezelfde subroutine.
Vandaar een apart sub.

Heeft iemand een oplossing voor het vervangen van de grafiek?

Ongetwijfeld kan de code ook optimalere geschreven worden.
 

Bijlagen

  • Voorbeeld Excel naar Word 5.xlsm
    48,9 KB · Weergaven: 5
Heeft iemand nog een oplossing?

Beste Forumleden,

Heeft iemand misschien nog een oplossing voor het vervangen van de grafiek in het Word-bestand.
Zie versie 5 van het voorbeeld in vorige post.

Hoor graag een reactie.

Het aandachtspunt zit in deze routine.
Grafiek wordt wel gekopieerd, maar niet vervangt niet de oude grafiek die al in het Word-bestand staat.

Code:
Sub KopieerGrafiek()
    
    Application.ScreenUpdating = False
    
    ' Declare variables
    Dim wdApp As Word.Application
    Dim wdDoc As Object
    Dim objShape As Object
    Dim objOLE As Object
    
    Dim xlShape As Excel.Shape
    
    
    ' Kopieer de grafiek uit Excel
    Sheets("Blad1").ChartObjects("Grafiek 1").Chart.ChartArea.Copy
      
    Set wdApp = New Word.Application
    wdApp.Application.ScreenUpdating = False
    wdApp.Visible = False
    
    ' Set reference to the embedded object
    Set objShape = Sheets("Blad1").Shapes("Object 3")
    Set xlShape = ThisWorkbook.Sheets("Blad1").Shapes("Grafiek 1")
    
    ' Activate the object and open the Word document
    objShape.OLEFormat.Activate
    Set objOLE = objShape.OLEFormat.Object
    objOLE.Activate
         
    ' Get reference to the Word document
    Set wdDoc = objOLE.Object
    wdDoc.Activate

    ' Select the entire document and replace

    xlShape.Select
    xlShape.CopyPicture
      
    wdApp.Selection.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile
    ' Select the entire document and replace
    'wdDoc.Content.Select
    
    wdDoc.Save
    wdDoc.Close
    
    ' Quit Word
    Call CloseWord
    Call QuitWord
        
    ' Clean up memory
    Set wdDoc = Nothing
    Set objOLE = Nothing
    Set objShape = Nothing
          
    ' Schoon op
    Set wdDoc = Nothing
    Set wdApp = Nothing
    
    Application.ScreenUpdating = True
    
    Range("C3").Select
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan