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

vanuit excel word openen en bladwijzers vullen

Status
Niet open voor verdere reacties.

mieppie1984

Gebruiker
Lid geworden
31 jan 2008
Berichten
31
Goedemiddag,

ik ben al een tijdje mijn hersens aan het kraken over een code.
wat is de bedoeling.
in excel zit een heel programma waarvan uiteindelijk vaste gegevens (deze zijn variabel per project, maar staan wel in een vaste cel) in een word sjabloon (= uiteindelijk de offerte) wil zetten.
nu had ik bedacht om dit doormiddel van bladwijzers in Word te doen.
ik heb een sjabloon gemaakt met simpel wat bladwijzers voor naw gegevens.
vanuit excel is het de bedoeling om het word sjabloon te openen en deze bladwijzers te vullen.
bijv. de bladwijzer "aannemer" wordt gevuld met cel "d5"

hoe krijg ik de bladwijzers gevuld?
ik ben al zoveel codes tegengekomen en stuk voor stuk lopen ze vast waardoor ik door de bomen het bos niet meer zie.

het bestand openen vanuit excel is me al gelukt:
Code:
Sub test_Document_Openen()
    Dim objWordApp As Object, objWordDoc As Object
    
    Set objWordApp = CreateObject("Word.application")
    objWordApp.Visible = True
    Set objWordDoc = objWordApp.Documents.Open("F:\Test\sjabloon offerte.dot")

End Sub


er zal iets bij moeten komen van:
'myDoc.Goto(what:=wdGoToBookmark, Name:="aannemer").Text = aannemer.Name
hiervoor heb ik cel "d5" de naam "aannemer" gegeven in excel.
ook dit krijg ik niet werkend.
Ik vermoed dat het aan de DIM en SET aan het begin van de code zit, maar weet niet hoe ik deze zelf moet schrijven/gebruiken in een code.

kunnen jullie mij op weg helpen?

gr. Miranda
 
Miranda,
Het zal niet aan de DIM of SET liggen. Dit heeft te maken met het declareren van variabele, maar daar zal ik je niet meer vermoeien...

Probeer dit eens
Code:
Sub Spaarie()
    With CreateObject("Word.Application")
        .Visible = True
        .Documents.Open "C:\jouw sjabloon.dot" 'plaats hier de link naar je Word-sjabloon
        With .ActiveDocument
            .Bookmarks("aannemer").Range.Text = Sheets(1).Range("A1").Value
        End With
    End With
End Sub
 
Spaarie,

bedankt, helaas werkt hij niet.
hij opent het sjabloon, maar vult de bladwijzer niet.
het is inderdaad het eerste blad in excel, in de cel staat ook tekst. maar wordt niet overgenomen.
een foutmelding geeft hij ook niet.
wat kan er aan de hand zijn?

gr.
Miranda
 
Miranda,

Dan is de macro goed en ik vermoed dat de bladwijzer niet heet zoals je aangeeft.
Om foute diagnoses te voorkomen is het verstandiger om beide bestanden te uploaden, ontdaan van gevoelige info, zodat we het kunnen reproduceren.
 
Ik heb de code op de volgende manier geplaatst:
Code:
Sub Spaarie()
    With CreateObject("Word.Application")
        .Visible = True
        .Documents.Open "C:\Desktop\sjabloon.dot" 'plaats hier de link naar je Word-sjabloon
        With .ActiveDocument
            .Bookmarks("aannemer").Range.Text = Sheets(1).Range("C2").Value 'waarde van aannemer
        End With
    End With
End Sub
en heb letterlijk 'aannemer' getypt, deze geselecteerd en vervolgens invoegen bladwijzer 'aannemer' (zie bijlage)
 

Bijlagen

Hoi Spaarie,

Tot zover heb ik hem werkend.
sheets(1) bleek niet te werken, was wel eerste in de rij, maar heb dit veranderd in de bladnaam en de makro werkt als een trein, bedankt!:thumb:

Nu ben ik wat verder en wil nog meer bookmarks vullen met tekst.
Echter de cellen die hier nu voor nodig zijn,
1. bevatten tekst die is verkregen d.m.v een formule in die cel.
2. cellen met gegevensvalidatie, tekst
hier blijft hij nu op vastlopen.

VBA geeft een lege foutmelding en arceert ook niks, dus ik kan niet zien waar ik fout zit.
enig idee of het wel kan wat ik wil?

Miranda
 
Het maakt voor de VBA code niet uit of de waardes verkregen worden via een formule of gegevensvalidatie (zie rode gedeelte).
Code:
.Bookmarks("aannemer").Range.Text = Sheets(1).Range("C2").[B][COLOR="#FF0000"]Value[/COLOR][/B]
Heb het tevens ook nog getest, maar ik krijg echt de waardes erin...

Ik denk toch dat je het probleem moet zoeken in de benaming van je bladwijzers. Desnoods moet je je bestanden weer even plaatsen... (ontdaan van gevoelige info natuurlijk).
 
Hoi Spaarie,

Ik denk dat ik weet wat er mis gaat.
Heb in jouw bestand ontdekt dat je een woord typt deze selecteert en dit als bladwijzer noemt.
Ik had bij de NAW gegevens geen tekst geselecteerd en toch werkte de bladwijzer, echter bij aannemer dus ineens niet.
Maar, nu werkt het! ik typ tekst, selecteer en dan als bladwijzer.
De cellen met gegevensvalidatie werken nu ook!


nog een andere vraag:
In excel staan alle mogelijke producten die we hebben.
echter per project worden er maar enkele aangeboden.
dit had ik ondervangen door in de kolom voor de cel met tekst dmv een formule een "x" te laten zetten, zodat ik alle lege regels kon filteren.
in excel werkt dat prima, maar de offerte (lees: tekst) moet naar Word.
Hoe kan ik in VBA aangeven dat de bookmark alleen gevuld mag worden met tekst als er in de kolom ervoor een "x" staat?
Of is er nog een andere manier?
vanuit een tekstvak in excel?
Ik ben bang dat de layout een drama wordt en ik alsnog de hele offerte moet nalopen.
(dit voorbeeld met producten, heb ik namelijk ook met een flink stuk tekst met voorwaarden die in iedere offerte weer anders kunnen zijn)

bijgaand een klein voorbeeld van hoe de product-tekst nu is opgebouwd.
Bekijk bijlage voorbeeld excel bladwijzer.xlsxBekijk bijlage sjabloon offerte2.dot

Ik had al enthousiast een "if then else" versie geprobeerd, maar dan bleef de bladwijzer leeg.
Er kwam ook geen foutmelding. helaas deze code weer verwijderd.

gr.
Miranda
 
Gebruik bij voorkeur geen bladwijzers in Word, maar documentvariabelen.
Bladwijzers zijn gemaakt voor gebruikers zonder VBA-kennis.
Vermijd samengevoegde cellen in Excel (daar houdt VBA niet van).

In jouw geval heb je geen sjabloonbestand in Word nodig;
Gebruik

Code:
  sn=sheets(1).usedrange

  with documents.add("G:\OF\__aannemer.docx")
  for sn=1 to ubound(sn)
     .variables(sn(j,1))=sn(j,2)
  next
  .fields.update
end with
 

Bijlagen

Laatst bewerkt:
Beste snb,

bedank voor je idee, echter heb ik nog nooit wat met documentvariabelen gedaan en begrijp ik niet wat je bedoeld.
Ik wil best de bladwijzers loslaten, maar zie nu even niet hoe ik dat om moet zetten naar documentvariabelen.


gr. Miranda
 
Ik dacht het een en ander ter bestudering te hebben toegevoegd.
 
Goedemorgen,

Ik ben al een eind op weg met het vullen van de bladwijzers. echter ineens vult hij vanaf een bepaald punt niet meer.
Is er een maximum aan codes/opdrachten voor de bladwijzer in vba?
onderstaand mijn code de bladwijzers heb ik ontdaan van gevoelige informatie en nu een nummer gegeven.
Sommige regels staan nog als "tekst" omdat ik nog aan het testen was vanaf de regels die het wel doen, 1 voor 1 toevoegen en kijken of het werkt.

Het gekke is als ik een van de onderste (die het niet doet) verschuif naar boven in de code, deze het wel doet!
helaas werkt dit trucje niet op alle regels...

Tevens vult hij nog altijd sommige bladwijzers niet.
het aanmaken van de bladwijzer doe ik op 2 manieren:
de eerste is: tekst typen, dit selecteren en dit als bladwijzer benoemen.
Dit was de eerste tip die ik hier kreeg en loste ook mijn probleem op.

de tweede (omdat het nu ineens niet meer werkt bij de volgende bladwijzers)
cursor op de plaats zetten waar de bladwijzer moet komen, dan de bladwijzer aanmaken.

oplossing 2 werkt in sommige van de bladwijzers die met optie 1 niet werken.
maar ook lang weer niet allemaal.

Nu moet de info ook gehaald worden uit verschillende bladen in excel.

@snb, jouw voorstel klinkt goed, alleen begrijp ik het niet. ik heb je bestanden doorgenomen, maar kom er niet uit.
Ik ben beginner in VBA en leer graag bij.

Code:
Sub BLADWIJZER()
    With CreateObject("Word.Application")
        .Visible = True
        .Documents.Open "W:\test sjabloon offerte op briefpapier.dot" 'plaats hier de link naar je Word-sjabloon
        With .ActiveDocument
        
            .Bookmarks("aannemer").Range.Text = Sheets("Blad3").Range("d5").Value 'NAW gegevens
            .Bookmarks("Adres").Range.Text = Sheets("Blad3").Range("d6").Value
            .Bookmarks("plaats").Range.Text = Sheets("Blad3").Range("d7").Value
            .Bookmarks("aanhef").Range.Text = Sheets("Blad3").Range("d8").Value
            .Bookmarks("aanhef_2").Range.Text = Sheets("Blad3").Range("d8").Value
            .Bookmarks("voorletter").Range.Text = Sheets("Blad3").Range("e8").Value
            .Bookmarks("contactpersoon").Range.Text = Sheets("Blad3").Range("F8").Value
            .Bookmarks("contactpersoon_2").Range.Text = Sheets("Blad3").Range("f8").Value
            .Bookmarks("projectnaam").Range.Text = Sheets("Blad3").Range("d13").Value
            .Bookmarks("projectplaats").Range.Text = Sheets("Blad3").Range("d14").Value
            .Bookmarks("projectnummer").Range.Text = Sheets("Blad3").Range("d15").Value
                       
            .Bookmarks("1").Range.Text = Sheets("offerte test").Range("F13").Value 'kolom 1 vullen
            .Bookmarks("2").Range.Text = Sheets("offerte test").Range("F14").Value
            .Bookmarks("3").Range.Text = Sheets("offerte test").Range("F15").Value
            .Bookmarks("4").Range.Text = Sheets("offerte test").Range("F16").Value
            .Bookmarks("5").Range.Text = Sheets("offerte test").Range("f17").Value
            .Bookmarks("6").Range.Text = Sheets("offerte test").Range("f18").Value
            .Bookmarks("7").Range.Text = Sheets("offerte test").Range("f19").Value
            .Bookmarks("8").Range.Text = Sheets("offerte test").Range("f20").Value
            .Bookmarks("9").Range.Text = Sheets("offerte test").Range("f21").Value
            .Bookmarks("10").Range.Text = Sheets("offerte test").Range("f22").Value
            
            .Bookmarks("11").Range.Text = Sheets("offerte test").Range("G13").Value  'kolom 2 vullen
            .Bookmarks("12").Range.Text = Sheets("offerte test").Range("G14").Value
            .Bookmarks("13").Range.Text = Sheets("offerte test").Range("G15").Value
            .Bookmarks("14").Range.Text = Sheets("offerte test").Range("G16").Value
            .Bookmarks("15").Range.Text = Sheets("offerte test").Range("G17").Value
            .Bookmarks("16").Range.Text = Sheets("offerte test").Range("G18").Value
            .Bookmarks("17").Range.Text = Sheets("offerte test").Range("G19").Value
            .Bookmarks("18").Range.Text = Sheets("offerte test").Range("G20").Value
            .Bookmarks("19").Range.Text = Sheets("offerte test").Range("G21").Value
            .Bookmarks("20").Range.Text = Sheets("offerte test").Range("G22").Value
  
            
            .Bookmarks("21").Range.Text = Sheets("offerte word").Range("c18").Value 'deze doet het
            .Bookmarks("22").Range.Text = Sheets("offerte word").Range("c19").Value 'deze doet het
            .Bookmarks("23").Range.Text = Sheets("offerte word").Range("c20").Value 'VANAF HIER WERKT HIJ NIET MEER
            .Bookmarks("24").Range.Text = Sheets("offerte word").Range("c21").Value
            .Bookmarks("25").Range.Text = Sheets("offerte word").Range("c22").Value
            
            .Bookmarks("26").Range.Text = Sheets("offerte word").Range("c24").Value 
            .Bookmarks("27").Range.Text = Sheets("offerte word").Range("c25").Value
            .Bookmarks("28").Range.Text = Sheets("offerte word").Range("c26").Value
    
      
            .Bookmarks("29").Range.Text = Sheets("offerte word").Range("c28").Value 
            .Bookmarks("30").Range.Text = Sheets("offerte word").Range("c29").Value
            .Bookmarks("31").Range.Text = Sheets("offerte word").Range("c30").Value
    
  '        .Bookmarks("32").Range.Text = Sheets("offerte word").Range("c32").Value 
     '       .Bookmarks("33").Range.Text = Sheets("offerte word").Range("c33").Value
    '        .Bookmarks("34").Range.Text = Sheets("offerte word").Range("c34").Value
    '        .Bookmarks("35").Range.Text = Sheets("offerte word").Range("c35").Value
    '        .Bookmarks("36").Range.Text = Sheets("offerte word").Range("c36").Value 
    '        .Bookmarks("37").Range.Text = Sheets("offerte word").Range("c38").Value 
    '        .Bookmarks("38").Range.Text = Sheets("offerte word").Range("c39").Value
    '        .Bookmarks("39").Range.Text = Sheets("offerte word").Range("c40").Value
    '        .Bookmarks("40").Range.Text = Sheets("offerte word").Range("c42").Value 
    '        .Bookmarks("41").Range.Text = Sheets("offerte word").Range("c43").Value
    '        .Bookmarks("42").Range.Text = Sheets("offerte word").Range("c44").Value
    '        .Bookmarks("43").Range.Text = Sheets("offerte word").Range("c46").Value 
    '        .Bookmarks("44").Range.Text = Sheets("offerte word").Range("c47").Value
    '        .Bookmarks("45").Range.Text = Sheets("offerte word").Range("c48").Value
    '        .Bookmarks("46").Range.Text = Sheets("offerte word").Range("c50").Value 
    '        .Bookmarks("47").Range.Text = Sheets("offerte word").Range("c51").Value
    '        .Bookmarks("48").Range.Text = Sheets("offerte word").Range("c52").Value
     '        .Bookmarks("49").Range.Text = Sheets("offerte word").Range("c54").Value
    '        .Bookmarks("50").Range.Text = Sheets("offerte word").Range("c55").Value
    '         .Bookmarks("51").Range.Text = Sheets("offerte word").Range("c56").Value
   '         .Bookmarks("52").Range.Text = Sheets("offerte word").Range("c57").Value
   '         .Bookmarks("53").Range.Text = Sheets("offerte word").Range("c59").Value 
    '        .Bookmarks("54").Range.Text = Sheets("offerte word").Range("c60").Value
   '         .Bookmarks("55").Range.Text = Sheets("offerte word").Range("c61").Value
            
   '         .Bookmarks("56").Range.Text = Sheets("offerte word").Range("c63").Value 
     '       .Bookmarks("57").Range.Text = Sheets("offerte word").Range("c64").Value
    '          .Bookmarks("58").Range.Text = Sheets("offerte word").Range("c65").Value
                       
  '          .Bookmarks("59").Range.Text = Sheets("offerte word").Range("c67").Value 
  '          .Bookmarks("60").Range.Text = Sheets("offerte word").Range("c68").Value
    '        .Bookmarks("61").Range.Text = Sheets("offerte word").Range("c69").Value
            
   '         .Bookmarks("62").Range.Text = Sheets("offerte word").Range("c71").Value
 '           .Bookmarks("63").Range.Text = Sheets("offerte word").Range("c72").Value
  '          .Bookmarks("64").Range.Text = Sheets("offerte word").Range("c73").Value
            
'            .Bookmarks("65").Range.Text = Sheets("offerte word").Range("c76").Value
                 
    '        .Bookmarks("budgetprijs").Range.Text = Sheets("offerte test").Range("d98").Value 'DEZE HEEFT HET GEDAAN, MAAR NU NIET MEER OMDAT HIJ VER NAAR ONDER IN DE CODE STAAT
            
     '       .Bookmarks("h33").Range.Text = Sheets("offerte test").Range("c98").Value 'voorwaarden
      '      .Bookmarks("h34").Range.Text = Sheets("offerte test").Range("c100").Value
                   
           
                      
      
    End With
End With

End Sub
 
Laatst bewerkt:
Hallo,
ik kom net tot de ontdekking dat er wat is met de "enter" wel of niet in een bladwijzer meenemen.
Deze heb ik nu buiten de bladwijzer gelaten en een bladwijzer die eerder niet werkte werkt nu wel.
echter als deze bladwijzer leeg blijft, omdat dit product niet wordt aangeboden. blijft wel de witregel staan.
Als de bladwijzer leeg is met een enter erin, dan verdwijnt deze extra regel.

Hoe kan ik nu zorgen dat mijn bladwijzer werkt en dat als hij leeg moet blijven, deze regel ook verwijderd wordt?
Iemand bekend hiermee?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan