Macro gegevens excel naar word (probleempje)

Status
Niet open voor verdere reacties.

Ollie78

Gebruiker
Lid geworden
13 sep 2006
Berichten
30
Hallo dames/heren,

Ik heb deze macro gekregen om een koppeling te kunnen maken tussen word en excel.
ik heb een excel db waar gegevens in staan. Deze gegevens moet via deze macro op bepaalde locaties in een word document terecht komen.
Nu is mij vertelt dat deze macro moet werken maar dat doet hij niet bij mij. Ik gebruik word en excel 2000 en heb geen mogelijkheid om naar een hogere versie te gaan. Weet iemand wat fout is met deze macro waarom hij het niet bij mij werkt.

grt,

olaf


Sub FileList(ByRef obj, foldernaam As String)

On Error Resume Next
obj.Clear
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(foldernaam)
Set colFiles = objFolder.Files
For Each objfile In colFiles
If Right(objfile.Name, 4) = ".dot" Then
obj.AddItem Left(objfile.Name, Len(objfile.Name) - 4)
End If
Next

End Sub

Public Sub ProjectBrieven(blnPrinten As Boolean)
Dim tmp As String
Dim y As Integer
Dim z As Integer
Dim wObj
Set wObj = CreateObject("Word.Application")
Dim wdoc

z = ActiveWorkbook.Worksheets("Klanten").Cells(1, 1).CurrentRegion.Rows.Count
For x = 0 To lstBrievenProject.ListCount - 1
If lstBrievenProject.Selected(x) Then
If blnPrinten Then
'deze brief printen voor alle klanten
'printer instellen
printeroud = wObj.ActivePrinter
wObj.ActivePrinter = clsF.PrinterBrief

Else

'brieven opslaan
Dim fs As New FileSystemObject
Dim mapnaam As String
mapnaam = ActiveWorkbook.Path & Application.PathSeparator & lstBrievenProject.List(x)
if Not fs.FolderExists(mapnaam) Then
fs.CreateFolder mapnaam
End If
Set fs = Nothing
End If
tmp = ActiveWorkbook.CustomDocumentProperties("SjablonenMap") & Application.PathSeparator & lstBrievenProject.List(x) & ".dot"
For y = 2 To z
LeesKlantGegevens y
Set wdoc = wObj.Documents.Add(template:=tmp)
With wdoc
.CustomDocumentProperties("klant_ID") = Klant.ID
.CustomDocumentProperties("klant_Registratienummer") = Klant.Registratienummer
.CustomDocumentProperties("klant_Sofinummer") = Klant.Sofinummer
.CustomDocumentProperties("klant_Geslacht") = Klant.Geslacht
.CustomDocumentProperties("klant_Voorletters") = Klant.Voorletters
.CustomDocumentProperties("klant_Naam") = Klant.Naam
.CustomDocumentProperties("klant_Adres") = Klant.Adres
.CustomDocumentProperties("klant_Postcode") = Klant.Postcode
.CustomDocumentProperties("klant_Plaats") = Klant.Plaats
.CustomDocumentProperties("klant_GemeenteCode") = Klant.GemeenteCode
.CustomDocumentProperties("klant_DatumGeboorte") = IIf(Klant.DatumGeboorte <> #12:00:00 AM#, Klant.DatumGeboorte, #12:00:00 AM#)
.CustomDocumentProperties("klant_Telefoon") = Klant.Telefoon
.CustomDocumentProperties("klant_Contactpersoon") = Klant.Contactpersoon
.CustomDocumentProperties("klant_DossierAnalyseResultaat") = Klant.DossierAnalyseResultaat
.CustomDocumentProperties("klant_InterviewResultaat") = Klant.InterviewResultaat
.CustomDocumentProperties("klant_HuisbezoekResultaat") = Klant.HuisbezoekResultaat
.CustomDocumentProperties("klant_Verslag1") = Klant.Verslag1
.CustomDocumentProperties("klant_Verslag2") = Klant.Verslag2
.CustomDocumentProperties("klant_Verslag3") = Klant.Verslag3
.CustomDocumentProperties("klant_Verslag4") = Klant.Verslag4
.CustomDocumentProperties("klant_Opvolgen") = Klant.Opvolgen
.CustomDocumentProperties("klant_AutoOpvolgen") = Klant.AutoOpvolgen
.CustomDocumentProperties("klant_Fase") = Klant.Fase
.CustomDocumentProperties("klant_BriefAdressering") = BriefAdressering
.CustomDocumentProperties("klant_BriefAanhef") = BriefAanhef
.CustomDocumentProperties("klant_PlanningDA_Adres") = Planning.DA_Adres
.CustomDocumentProperties("klant_PlanningDA_Consulent") = Planning.DA_Consulent
.CustomDocumentProperties("klant_PlanningDA_ConsulentNaam") = Planning.DA_ConsulentNaam
.CustomDocumentProperties("klant_PlanningDA_Dag") = Planning.DA_Dag
.CustomDocumentProperties("klant_PlanningDA_Datum") = Planning.DA_Datum
.CustomDocumentProperties("klant_PlanningDA_Gereserveerd") = Planning.DA_Gereserveerd
.CustomDocumentProperties("klant_PlanningDA_Kamer") = Planning.DA_Kamer
.CustomDocumentProperties("klant_PlanningDA_Locatie") = Planning.DA_Locatie
.CustomDocumentProperties("klant_PlanningDA_Plaats") = Planning.DA_Plaats
.CustomDocumentProperties("klant_PlanningDA_Status") = Planning.DA_Status
.CustomDocumentProperties("klant_PlanningDA_Tijd") = Planning.DA_Tijd
.CustomDocumentProperties("klant_PlanningCO_Adres") = Planning.Co_Adres
.CustomDocumentProperties("klant_PlanningCO_Consulent") = Planning.Co_Consulent
.CustomDocumentProperties("klant_PlanningCO_ConsulentNaam") = Planning.CO_ConsulentNaam
.CustomDocumentProperties("klant_PlanningCO_Dag") = Planning.Co_Dag
.CustomDocumentProperties("klant_PlanningCO_Datum") = Planning.CO_Datum
.CustomDocumentProperties("klant_PlanningCO_Gereserveerd") = Planning.Co_Gereserveerd
.CustomDocumentProperties("klant_PlanningCO_Kamer") = Planning.CO_Kamer
.CustomDocumentProperties("klant_PlanningCO_Locatie") = Planning.Co_Locatie
.CustomDocumentProperties("klant_PlanningCO_Plaats") = Planning.Co_Plaats
.CustomDocumentProperties("klant_PlanningCO_Status") = Planning.CO_Status
.CustomDocumentProperties("klant_PlanningCO_Tijd") = Planning.Co_Tijd
.CustomDocumentProperties("klant_PlanningHB_Adres") = Planning.HB_Adres
.CustomDocumentProperties("klant_PlanningHB_Consulent") = Planning.HB_Consulent
.CustomDocumentProperties("klant_PlanningHB_ConsulentNaam") = Planning.HB_ConsulentNaam
.CustomDocumentProperties("klant_PlanningHB_Dag") = Planning.HB_Dag
.CustomDocumentProperties("klant_PlanningHB_Datum") = Planning.HB_Datum
.CustomDocumentProperties("klant_PlanningHB_Gereserveerd") = Planning.HB_Gereserveerd
.CustomDocumentProperties("klant_PlanningHB_Kamer") = Planning.HB_Kamer
.CustomDocumentProperties("klant_PlanningHB_Locatie") = Planning.HB_Locatie
.CustomDocumentProperties("klant_PlanningHB_Plaats") = Planning.HB_Plaats
.CustomDocumentProperties("klant_PlanningHB_Status") = Planning.HB_Status
.CustomDocumentProperties("klant_PlanningHB_Tijd") = Planning.HB_Tijd
.Fields.Update
If blnPrinten Then
.PrintOut
fname = ID_Met_Voorloop_Nullen(Klant.ID) & Space(1) & Klant.Naam & _
Space(1) & lstBrievenProject.List(x) & Space(1) & Klant.Fase
Status Notitie(Klant.ID, "Document " & fname & " afgedrukt.")
.Close savechanges:=False
Else
fname = mapnaam & Application.PathSeparator & _
ID_Met_Voorloop_Nullen(Klant.ID) & Space(1) & Klant.Naam & _
Space(1) & lstBrievenProject.List(x) & Space(1) & Klant.Fase
.SaveAs Filename:=fname, Addtorecentfiles:=False
Status Notitie(Klant.ID, "Document " & fname & " aangemaakt.")
.Close savechanges:=False
End If
DoEvents
End With
Next y
End If
Next x 'volgende item uit lstbBrievenProject
Set wdoc = Nothing
wObj.Quit
Set wObj = Nothing
'na afloop alle selecties opheffen
For x = 0 To lstBrievenProject.ListCount - 1
lstBrievenProject.Selected(x) = False
Next x
'klantgegeven weer laten corresponderen met gekozen klant in lstKlanten
lstKlanten_Click
End Sub
 
Nee want dat lutk me niet.

Als ik deze macro nu in excel of in word plak. dan zie ik hem niet. Kan hem ook niet uitvoeren. Als ik de tekst tussen de sub () weghaal dan zie ik de naam van de macro wel maar als ik dan heb run druk gebeurd er niks.

Ik weet ook niet of ik voor het tweede gedeelte van macro eerst document moet aanmaken met customerdocumentproperty's. Dit lukt me ook niet.

Graag zou ik van ieamnd een voorbeeld willen zien hoe hij van deze macro in word/excel 2000 iets kan maken wat werkt.

Mijn probleem is dat ik een database heb in excel. Van deze database moet op bepaalde plaatsen in word document de gegevens komen te staan. Dit zou moeten lukken met deze macro. Maar het werkt bij mij dus niet.

grt,

olaf
 
macro gegevens van Excel naar Word

Is dit alles wat de gegevens moet verwerken? Dan geloof ik graag dat het niet werkt.

Sub FileList wordt nergens gebruikt. Wat is de bedoeleing?

Listbrievenproject is een listbox met de klantnamen. Waar is die?

clsF is een object. Waar verwijst clsF naar?

LeesKlantgegevens is een sub. Waar staat de beschrijving?

Notitie is een functie. Waar staat deze functie beschreven?

Ik wil best een programma voor je schrijven, maar dan moet ik wel precies weten welke gegevens je hebt en wat daar mee moet gebeuren.
 
Hallo Axel,

Ik moet in excel een database hebben waar allerlei productspecificaties in staan van verschillende artikelen.
We hebben in word een productspecificatieblad die we voor alle artikelen gebruiken.

Wat ik wil is dat als ik in excel een artikel uit mijn databse kies dat hij dan via een macro automatisch mijn productspecificatieblad maakt in word volgens mijn gewenste lay-out.
Ik heb van mijn productspecificatieblad al een template van gemaakt. Nu moet ik alleen op een of andere manier in deze template een verwijzing maken naar een bepaalde cel of kolom in mijn excel database, in de template is het wel zo dat ik niet elke regel kan en mag invullen. Dus het is niet gewoon knippen en plakken.

Ze hadden mij vertelt dat dat via deze macro kon.

Als je een oplossing voor me heb hoor ik het graag. Mocht je nog meer inforamtie nodig hebben dan hoor ik het ook.

grt,

olaf
 
van Excel naar Word

Nou Olaf,

Open de bijlage maar en kijk of dit iets is om op voort te borduren.

Axel.
 

Bijlagen

Hallo Axel,

Dit werkt al mooi. Alleen zou ik willen dat de gegevens van uit excel op een bepaalde plaats in het word document komen te staan.

ik heb zelf een word template bijgevoegd. Op de plaatsen waar een getal dik gedrukt staat zou eigenlijk een waarde uit het excel tabel moeten komen te staan.

Zou dit lukken denk je.

grt,

olaf
 

Bijlagen

Hallo Axel,

Kwam nog iets tegen. De macro werkt wel goed.
Alleen als ik de macro run en daarna het word document open dan zie ik verder geen tekst in het document staan. Hij is wel goed opgeslagen. Dat werkt dus wel alleen zie ik niks.

Weet jij waaraan dat ligt.

grt,

olaf
 
Excel naar Word

Dag Olaf,

Maak een map in C genaamd: Budgetbeheer en daarin een map Verslagen

Sla de template op in Budgetbeheer als Verslag.dot (is nu Verslag.zip)

Start de macro en kijk in de map Verslagen

Succes,

Axel
 

Bijlagen

Hallo Axel,

Het gaat al aardig de goede richting op met jouw macro.

Heb alleen twee probleempjes. Als ik hem run geeft hij een foutmelding bij:

With objWord
.Documents.Add Template:=Sjabloon
With .ActiveDocument
With .Tables(1)
.Cell(1, 1) = a(1, 1)
.Cell(2, 1) = a(1, 2) & vbCr & a(1, 3) & vbCr & a(1, 4) & vbCr & a(1, 5)
.Cell(2, 2) = a(1, 6)

Hij plaatst de gegevens vanuit excel niet in cell 2,2 als ik er cell 1,2 van maak doet hij het wel maar staat die op de verkeerde locatie. Wat moet ik hier aan doen zodat hij wel werkt.

Tweede probleem: Het excel bestand moet een databse worden. Zoals ik het zie kan ik straks niet willekeurig uit de database een klant kiezen en dan de macro runnen. Dan moet ik eerst k in de macro wijzigen. Nu is k = 2 dan plakt de macro dus rij 2 in ons word document wat als ik nu rij 4 wil plakken in het document.
Mijn vraag is of het mogelijk is om de macro met een userform te schrijven net zoals je bij jouw eerste voorstel voor de macro hebt gedaan, waar ik dan de klant kan selecteren.

Alvast hartstikke bedankt, je helpt me al mooi op weg.

grt,

olaf
 
Excel naar Word

Dag Olaf,

Hoewel je dat niet kunt zien bestaat cel(2,2) niet. Dat moet zijn cell(3,2).

Voor de rest start Map3.zip en kijk of het is wat je bedoelt.
 

Bijlagen

Hallo Axel,

De macro werkt zo goed voor mij. Alleen 1 functie binnen de macro doet hij niet.
Als ik namelijk meerdere klanten selecteer dan kan hij maar van de 1ste klant een document maken en daarna geeft hij een automatiseringsfout. Als dit eruit is werkt hij perfect.

HARTSTIKKE BEDANKT alvast.

Heb nog wel 1 uitdaging misschien. Is het mogelijk om met dezeflde excel database 3 verschillende templates te maken. Hiervoor heb ik dezelfde gegevens nodig. Alleen de lay-out van de template is iets anders. Als voorbeeld tabel extra of een tabel met een kolom minder. Is hier een mogelijkheid voor.

Laat het me weten.

En nogmaals bedankt.

grt,

olaf
 
Macro gegevens excel naar Word

Fout klopt. Word werd voorbarig verwijderd en daarna weer aangeroepen. Is intussen verbeterd.

Al wil je honderd sjablonen gebruiken. Kan allemaal. Bijvoorbeeld omdat je bij elke klant opneemt welk sjabloon op hem van toepassing is en dan kan het programma met dit gegeven de juiste sjabloon selecteren.

Select case Sjabloon
Case 1
Sjabloon1
Case 2
Sjabloon 2
End Select

Je kunt ook selecteren aan de hand van bepaalde gegevens. Legio mogelijkheden. maar je dient eerst te weten wat je wilt bereiken met de gegevens die je hebt opgeslagen.
 

Bijlagen

Hallo Axel,

Het is heel eenvoudig wat ik wil. We hebben bij ons in het bedrijf verschillende afdelingen die verschillende producten maken. Voor elk product moet er een productspecificatieblad komen. Dit blad is per afdeling verschillend. Houd voor mij dus in dat ik max. 3 verschillende sjablonen nodig heb. Het verschil in de sjablonen is de locatie waar hij de meetgegevens vanuit de excel database neerzet.

Ik ben nu met vakantie en ben pas 3 janauri weer op het werk. Heb thuis de gegevens niet. Dus ik zal pas na 3 janauri hier mee verder kunnen.

In ieder gaval hartstikke bedankt en fijne feestdagen.

grt,

ollie78
 
Macro gegevens excel naar word

Dag Ollie98,

Prettige vakantie en neem daarna nog maar eens contact op.
 
Hallo Axel,

Hier ben ik weer. Heb toch nog een probleempje gevonden in de macro.
Als ik hem afdruk dan opent de macro wel meerdere bestanden als ik er meerdere in de lijst selecteer maar hij slaat er maar 1 op. Hij verwijst namelijk in de macro bij save as naar een cell in excel. Deze zal altijd dezelfde naam hebben. Wat ik zou moeten hebben is dat hij bijv. tabel 1 cell 2 in kolom 1 pakt in het word document als naam om op te slaan. Kan dit ook nog gewijzigd worden. Ook zou ik graag willen dat in de lijst van klanten nog een verwijzing erbij komt te staan. Als ik namelijk 1 klant heb met meerdere producten dan kan ik in de lijst niet zien welke klant het is. Nu verwijst hij naar kolom a maar kan je hem ook naar kolom a en f laten verwijzen.

En als het mogelijk is zou ik ergens een optie willen hebben waar ik kan aangeven welke sjabloon hij moet gebruiken ik heb namelijk 1 database en moet wel 3 verschillende productspecificatie sjablonen hebben.

laat me weten wat mogelijk is.

Voorlopig red ik mij perfect met deze macro maar als dit nog gewijzigd kan worden dan is de macro optimaal voor mij.

Alvast bedankt en ik wens jouw een heel gezond 2007.

grt,

olaf
 
Laatst bewerkt:
Dag Olaf,

Ook een voorspoedig 2007 toegewenst.

Dat de bestanden steeds dezelfde naam kregen is niet verwonderlijk. Er werd steeds naar dezelfde cel verwezen. Cells(1,1) moet natuurlijk wezen Cells(k,1). je kunt natuurlijk ook verwijzen naar een cel uit een van de tabellen. Activedocument.Tables(1).Cell(2,1).Value (wel even de vbCr aan het eind verwijderen). Maar zoals het nu is, is minder omslachtig.

Als je aan een klant meerdere, verschillende artikelen wilt koppelen dan zou je een aparte sheet met artikelen kunnen maken, waaraan diverse eigenschappen zijn gekoppeld (prijs, leverancier, enz.).

Aan de klant koppel je dan een aantal cellen waarin je het nummer van het artikel kunt opslaan.

Verwijzing naar een sjabloon:
1. Afhankelijk van klant: Zet in een daarvoor bestemde cel het nummer van de sjabloon.
2. Afhankelijk van het artikel. Zet in een daarvoor bestemde cel (van het artikelen bestand) het nummer van de sjabloon.

Je kunt het geheel nog uitbreiden om klanten en artikelen te wijzigen en te verwijderen.

Succes er mee.
 
Hallo Axel,

Ik heb nog een vraag aan jouw. Misschien ben ik wel lastig maar als je eenmaal met zo iets bezig bent wil je het ook perfect hebben.

Heb nu de volgende vraag:

Ik heb jouw macro en bestandje gebruikt om iets uit te proberen maar krijg het niet helemaal voor elkaar. Is het mogelijk dat ik 3 userforms gebruik om bij mijn gewenste doel te komen.

Wat is de bedoeling; Heb de db iets aangepast. In de eerste kolom staat nu team 1, team 2 en team 3. Als je nu op ctrl-m drukt krijg je een nieuwe userform met buttons met de teams erop. Zodra ik een van de teams aanklik gaat hij naar de userform die jij hebt gemaakt. Wat ik hier zou willen zien is dat hij dan alleen de uitslagen van het team weergeeft die ik heb aan geklikt. Hij moet dan dus gaan filteren. Zodra ik daarna op een van de uitslagen druk moet hij naar een nieuw userform gaan waar de aanvoerders van dat team in staan. Als ik deze aanklik moet hij mijn blad in word gaan maken.

Op het moment dat je een team selecteert in het eerste userform moet hij ook al 1 bepaald sjabloon aansturen die hij bij het laatste userform gebruikt om naar word toe te gaan. Elk team heeft zijn eigen sjabloon.

Is dit mogelijk en kan je dit eenvoudig maken. Heb de test db bijgevoegd.

grt,

Ollie78
 

Bijlagen

Dag Ollie76,

Het is niet niodig om twee userforms te gebruiken (zie test2).

Ik heb een datum/tijd kolom toegevoegd om de diverse wedstrijden te kunnen onderscheiden.

Tenzij de sjablonen voor de verschillende teams erg uiteenlopen, lijkt het me niet nodig om voor elk team een verschillend sjabloon te gebruiken.

Het programmeren van het invullen van het document vanuit excel laat ik aan jou over.

Succes.
 

Bijlagen

Hallo Axel,

Bedankt voor jouw reactie.
Maar de gegevens die ik heb gebruikt in test1 zijn fictief. In werkelijkheid komen daar gegevens te staan voor producten die ik bij mijn bedrijf maak.
Ik moet zonder een extra kolom in te vullen, zoals jij hebt gedaan met datum, een onderscheid kunnen maken tussen team 1, 2 en 3. Ik weet niet of jij daar een andere oplossing voor heb maar mijn idee was dus om via de drie userforms een onderscheid te kunnen creeren. Is het niet mogelijk om met 3 userforms te werken. Ik zit namelijk ook nogsteeds met het probleem van de 3 verschillende sjablonen. Deze heb ik zo ie zo nodig.
Zou jij misschien toch nog een opzetje kunnen maken met 3 userforms. Evt kan ik er dan zelf verder op borduren zodat het voor mij goed werkt. Ben al bezig met boeken van vba aan het lezen.

grt,

ollie78
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan