Avatar billede shooter Novice
15. oktober 2002 - 08:58 Der er 39 kommentarer og
1 løsning

brugervenlig udtræk fra access ind i Word

Jed skal i word97 indsætte data fra en (hjemmelavet) adressetabel i access97 (købte og betalte programmer - derfor så gamle).
Jeg har prøvet at lave det med brevflette funktionen i word, men da jeg kun skal bruge een adresse ved hver fletning + at den der skal bruge funktionen er total edb ukyndig er dette ikke godt nok.
Spørgsmålet er:
Hvilken metode skal jeg benytte for at lave et brugervenligt opslag fra mit word dokument ind i access databasen, således at jeg kan vælge en adresse og returnere den og indsætte den i mit word dokument?

Jeg er ikke helt fortrolig med MS produkterne og hvad man kan med dem, men jeg arbejder med edb til hverdag. Så med gode anvisninger vil jeg mene at jeg selv kan lave noget fornuftigt, blot jeg får vist vejen.
Avatar billede sjap Praktikant
15. oktober 2002 - 10:33 #1
shooter

Jeg må indrømme, at jeg ikke har prøvet det - selvom jeg tit har tænkt på det. Jeg har dog fundet en hjemmeside hos MS, der måske kan hjælpe dig lidt på vej.

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q193716
Avatar billede sjap Praktikant
15. oktober 2002 - 10:35 #2
Det kan godt være at et af linkene i bunden af ovennænvte link, er lidt nemmere at gå til (de er dog stadig ret omfattende).
Avatar billede sjap Praktikant
15. oktober 2002 - 10:43 #3
shooter du kan måske også finde noget i et af de gamle svar:

http://www.eksperten.dk/spm/235432
Avatar billede shooter Novice
15. oktober 2002 - 11:32 #4
superjap
Foreløbig tak
jeg kikker på det når ungerne er lagt til at sove i aften.
Avatar billede mugs Novice
15. oktober 2002 - 18:24 #5
Du skal bruge brevflette i Word.
Selv om du har flere poster i Access, er det ikke noget problem at lave en parameter i Access, der kun fletter en udvalgt post.
I din Forespørgsel i Access sætter du firekantede paranteser i nøglefeltets kriterie-linie således: []
Herefter vil forespørgslen poppe op med en inputbox, der beder dig indtaste en værdi, der svarer til den ønskede post. Denne metode betyder naturligvis, at brugeren skal kende denne værdi i forvejen. du vil få inputboxen uanset om forespørgslen køres fra Access eller fra Word.

En anden metode, der måske er mere brugervenlig, hvis brugeren ikke kender den unikke værdi for den ønskede adresse, er så at sige den omvendte måde:

Du åbner Access, og finder den ønskede adresse. Derefter trykker du på en kommandoknap, og straks vil Access åbne Word, og overføre formularens data til Word. Når brugeren er færdig med Word, lukkes programmet, og du er tilbage i Word.
Denne sidste metode kræver lidt mere programmering i Access.

Jeg skal gerne lave et par simple eksempler. Blot svar her og læg din e-mail.
Avatar billede shooter Novice
15. oktober 2002 - 21:36 #6
Hej mugs
Det lyder som superservice, som jeg meget gerne vil benytte mig af.
Min mailadresse er marksmanhouse@email.dk
Jeg glæder mig.
Avatar billede mugs Novice
15. oktober 2002 - 22:23 #7
Begge eksempler er sendt.
Avatar billede shooter Novice
15. oktober 2002 - 22:26 #8
mugs
Det lyder som om det at starte word fra fra access og overføre fundne data til word er den rette metode.

Jeg har defineret en kontolknap i access der starter word (nemt med guiden)
men hvordan jeg får overført data fra den post jeg står på til word, får åbnet et predefineret dokument (altid det samme), får sat data ind på predefinerede pladser og gemt dokumentet i et nyt navn - se det er der jeg er på herrens mark ( jeg var på access kursus i 1994 ca. og har aldrig brugt det siden såååå).
Kode for kontrolknappen (genereret med guiden):

Private Sub fakturaknap_Click()
On Error GoTo Err_fakturaknap_Click

    Dim oApp As Object

    Set oApp = CreateObject("Word.Application")
    oApp.Visible = True
   

Exit_fakturaknap_Click:
    Exit Sub

Err_fakturaknap_Click:
    MsgBox Err.Description
    Resume Exit_fakturaknap_Click
   
End Sub
Avatar billede mugs Novice
15. oktober 2002 - 22:35 #9
Du kan åbne formularen i designvisning > trykke på kommandoknappen > tryllestav og du kommer ind i kodemodulet. Her er indsat flg. kode:


Dim objword As New Word.Application
Dim WordDoc As New Word.Document
Set WordDoc = objword.Documents.Add("C:\Access Word\Word.doc")
Call InsertAtBookmark(WordDoc, "fornavn", Me!fornavn)
Call InsertAtBookmark(WordDoc, "efternavn", Me!efternavn)
Call InsertAtBookmark(WordDoc, "gade", Me!gade)
Call InsertAtBookmark(WordDoc, "postnr", Me!postnr)
Call InsertAtBookmark(WordDoc, "by", Me!by)
objword.Visible = True
DoCmd.Hourglass False

koden klader procedüren "InsertAtBookmark". "fornavn" svarer til navnet på bogmærket i Word, og Me!fornavn er Access datafelt, der indeholder data. InsertAtBookmark ser sådan ud:

With objWordDoc.Bookmarks
If .Exists(strBookmark) Then
.Item(strBookmark).Range.Text = strText
InsertAtBookmark = True
End If
End With

Men det nemmeste er nok, at åbne Access - formularen og se hvordan.
Og andet er ikke nødvendigt.
Avatar billede shooter Novice
15. oktober 2002 - 23:08 #10
mugs
Du er cool.
Det er 100% hvad jeg har brug for. Min sidste kommentar krydsede dine mails, derfor det lidt "uvidende" indhold. Jeg havde så travlt med at nyde din kode at jeg ikke fik "dementeret" mit sidste indlæg.
Du får lige 170 point ekstra.
Avatar billede faroe Nybegynder
16. oktober 2002 - 00:14 #11
mugs  Jeg vil gerne også have et eksemplel vis det er OK solar_fo@hotmail.com
Avatar billede mugs Novice
16. oktober 2002 - 07:19 #12
eksempler sendt til faroe.
Avatar billede weaponx Nybegynder
15. januar 2004 - 16:18 #13
Mugs er det muligt at få sendt et eksempel også?

NOSPAMrolf@veino.dkNOSPAM

udelad NOSPAM
Avatar billede mugs Novice
15. januar 2004 - 20:32 #14
Jeg har ikke den oprindelige fil lavet til brugeren shooter. Men jeg har sendt en anden fil, der gør nøjagtig det samme til faroe og weaponx.
Avatar billede mugs Novice
15. januar 2004 - 21:59 #15
weaponxp -> Mailen til dig er lige kommet retur:

Unable to deliver message to the following recipients, because the message was forwarded more than the maximum allowed times. This could indicate a mail loop.

Hva' nu
Avatar billede weaponx Nybegynder
16. januar 2004 - 07:12 #16
sorry mugs jeg havde lavet en stavefejl, der manglede et e

NOSPAMrolf@veinoe.dkNOSPAM

og tusind tak for at du gider reagere på et gammelt indlæg og lave et nyt eksempel
jeg vil evt. gerne oprette et spørgsmål og give point for din hjælp
Avatar billede mugs Novice
16. januar 2004 - 12:27 #17
Sendt igen til weaponx
Avatar billede bevs Nybegynder
04. august 2004 - 01:24 #18
Spørgsmål til Mugs:

Du skriver at "..din Forespørgsel i Access sætter du firekantede paranteser i nøglefeltets kriterie-linie således: [].."

Er det muligt, at popup vinduet præsenterer brugeren for en kombobox, hvorfra der så skal gøres et valg (i stedet for at skrive en værdi, hvilket kræver at brugeren på forhånd kender de forskellige værdier)?

Der er points her:
http://www.eksperten.dk/spm/526079
Avatar billede mugs Novice
04. august 2004 - 05:45 #19
Umiddelbart mener jeg ikke du kan gøre det med en combo. Du skal i hvert fald have en tabel hvori du har din combo. Men jeg har aldrig prøvet.

Jeg vil som en anden bruger foreslå en formular, hvoi du sætter din combo, og i den forespørgsel der skal levere data til Word sætte en reference til comboen:

[Forms]![Formularnavn]![Combo]
Avatar billede jannhomm Nybegynder
01. oktober 2004 - 11:09 #20
Hej mugs
er det muligt at jeg også kan få fremsendt en ?

NOSPAMjann@hommelgaard.orgNOSPAM

På forhånd tak!
Avatar billede mugs Novice
01. oktober 2004 - 11:58 #21
jannhomm > Det liger hjemme, sender når jeg er hjemme fra arbejde.
Avatar billede jannhomm Nybegynder
01. oktober 2004 - 12:29 #22
Perfekt - mange tak :-)

har prøvet mig frem, men får fejl ved
Call InsertAtBookmark

/Jannhomm
Avatar billede jannhomm Nybegynder
05. oktober 2004 - 12:56 #23
Hej mugs tak for databasen,
jeg har bare et spørgsmål, vedr opsætningen.
Jeg kan se at alle opskrifter har deres eget word dokument, hvordan opsætter jeg vba koden til kun det samme dokument, så det ikke er word brev 0, 1, 2, 3 osv. '
Det er lidt besværligt at oprette 2000 word breve, og fylder en del :-)

Private Sub Kommandoknap28_Click()
On Error GoTo err_open
Dim docname As String
Dim objword As Word.Application
Dim objdoc As Word.Document
Const dir As String = "C:\forret\"
Const ext As String = ".doc"
docname = dir & Me.id & ext
On Error Resume Next
Set objword = GetObject(, "Word.Application")
Err.Clear
On Error GoTo err_open
If objword Is Nothing Then
Set objword = GetObject("", "Word.Application")
End If
objword.Visible = True
AppActivate "Microsoft Word"
objword.Documents.Open docname
objword.PrintOut
objword.Visible = False
MsgBox "Forret er sendt til printer." & vbNewLine & "Vent på udskrift."
Exit Sub
err_open:
MsgBox "fejlkode: " & Err.Number
End Sub
Avatar billede mugs Novice
05. oktober 2004 - 13:06 #24
Hver opskrift har sin egen opskrift, idet opskrifterne er forskellige. Access henter det worddokument der matcher med formularens opskriftnummer. det sker på disse linier:

Const dir As String = "C:\forret\"
Const ext As String = ".doc"
docname = dir & Me.id & ext

Hvis du hele tiden vil hente det samme dokument, kan du se den fulde kode, hvis du prøver at oprette en opskrift i Access. Når du har udfyldt formularen trykker du på knappen "Skriv opskrift" (eller noget lignende), og Access vil så hente den word-skabelon (Opskrift.dot) hvori bogmærkerne er indsat.
Avatar billede jannhomm Nybegynder
05. oktober 2004 - 13:12 #25
kunne man ikke kalde docname for brev1 eller lign. ?
Avatar billede jannhomm Nybegynder
05. oktober 2004 - 13:30 #26
Const dir As String = "C:\forret\"
Const ext As String = ".doc"
docname = dir & Me.id & ext

kunne man ikke hardkode denne til kun at åbne ("C:\Access Word\Word.doc")
Avatar billede jannhomm Nybegynder
05. oktober 2004 - 13:33 #27
bogmærkerne har jeg fået ind i mit eget brev... det er kun at jeg gerne vil have det samme brev åbnet
Avatar billede mugs Novice
05. oktober 2004 - 13:42 #28
Prøv med:
dim a as String
a = "Word"
Const dir As String = "C:\Access Word\"
Const ext As String = ".doc"
docname = dir & a & ext

Det er lidt svært på denne maskine, da jeg hverken har Word eller Access. Men om ikke andet, kan jeg prøve når jeg kommer hjem.
Avatar billede jannhomm Nybegynder
05. oktober 2004 - 13:46 #29
Jubii... så fandt jeg ud af det. læste ikke din besked rigtigt. Men koden var jo lige foran næsen :-)

Tak for hjælpen!!!

-----

Private Sub Kommandoknap21_Click()
Dim objword As New Word.Application
Dim WordDoc As New Word.Document
Set WordDoc = objword.Documents.Add("C:\forret\brev1.doc")
Call InsertAtBookmark(WordDoc, "fornavn", Me!fornavn)
Call InsertAtBookmark(WordDoc, "efternavn", Me!efternavn)
Call InsertAtBookmark(WordDoc, "vej", Me!vej)
Call InsertAtBookmark(WordDoc, "husnr", Me!husnr)
Call InsertAtBookmark(WordDoc, "bogstav", Me!bogstav)
objword.Visible = True
DoCmd.Hourglass False
End Sub
Function InsertAtBookmark(objWordDoc As Word.Document, strBookmark As String, strText As String) As Boolean
With objWordDoc.Bookmarks
If .Exists(strBookmark) Then
.Item(strBookmark).Range.Text = strText
InsertAtBookmark = True
End If
End With
End Function

Private Sub Nr_Click()
Dim objword As New Word.Application
Dim WordDoc As New Word.Document
Set WordDoc = objword.Documents.Add("D:\forret\brev1.doc")
End Sub
Avatar billede jannhomm Nybegynder
05. oktober 2004 - 13:48 #30
kan åbne et spørgsmål, hvis du vil have point :-)...
du har jo brugt en del tid på at hjælpe.
Avatar billede mugs Novice
05. oktober 2004 - 14:20 #31
Fint der fungerer. Jeg har de point jeg skal bruge - Ellers tak.
Avatar billede jannhomm Nybegynder
05. oktober 2004 - 16:34 #32
Den laver desværre en fejl nu !! hvis der er et bookmark felt som er tomt, indsætter den bare de næste tal fx.

fornavn efternavn vej husnr side dør postnr by

Hans Hansen Hansenvej 5        2100 København

dette indsætter den således:
Hans Hansen Hansenvej 5  2100 København 2100 København

Hvordan kan jeg undgå dette ?
Avatar billede jannhomm Nybegynder
05. oktober 2004 - 17:15 #33
har smidt den over i et excel ark og sammensat adresselinjen der.

vej    husnr    bogstav    etage    side    doer    postnr    by

=SAMMENKÆDNING(D2; HVIS(E2<>"";" ";);E2; HVIS(E2<>"";" ";); F2; HVIS(F2<>"";", ";); G2; HVIS(G2<>"";". ";); H2; HVIS(H2<>"";". ";); I2;)
Avatar billede mugs Novice
05. oktober 2004 - 17:27 #34
Prøv denne:

Function InsertAtBookmark(objWordDoc As Word.Document, strBookmark As String, strText As String) As Boolean
If nor IsNull(Me.FELTNAVN) Then
With objWordDoc.Bookmarks
If .Exists(strBookmark) Then
.Item(strBookmark).Range.Text = strText
InsertAtBookmark = True
End If
End With
Else: exit function
End Function
Avatar billede jannhomm Nybegynder
12. oktober 2004 - 16:37 #35
Når nu skal det så effektiviseres lidt mere :-) - hvordan brevfletter jeg x antal personer ind i brevet, så jeg får x antal breve udskrevet.

jeg har lavet følgende sql, der opdaterer et par felter, hvordan skriver jeg kun de wordbreve der findes ved en select ?

UPDATE postdk SET postdk.Udsendtaf = [Udsendt af ], postdk.udsenddato = [ dato for udsendelse dd-mm-åååå]
WHERE (((postdk.Udsendtaf) Is Null) AND ((postdk.Id) Between [ skriv START ID tal] And [skriv SLUT ID tal]));

- eller evt. udskrive breve til alle de kunner der er på skærmen.

ved brug af denne

Private Sub Kommandoknap21_Click()
Dim objword As New Word.Application
Dim WordDoc As New Word.Document
Set WordDoc = objword.Documents.Add("C:\forret\brev1.doc")
Call InsertAtBookmark(WordDoc, "fornavn", Me!fornavn)
Call InsertAtBookmark(WordDoc, "efternavn", Me!efternavn)
Call InsertAtBookmark(WordDoc, "vej", Me!vej)
Call InsertAtBookmark(WordDoc, "husnr", Me!husnr)
Call InsertAtBookmark(WordDoc, "bogstav", Me!bogstav)
objword.Visible = True
DoCmd.Hourglass False
End Sub
Function InsertAtBookmark(objWordDoc As Word.Document, strBookmark As String, strText As String) As Boolean
With objWordDoc.Bookmarks
If .Exists(strBookmark) Then
.Item(strBookmark).Range.Text = strText
InsertAtBookmark = True
End If
End With
End Function

Private Sub Nr_Click()
Dim objword As New Word.Application
Dim WordDoc As New Word.Document
Set WordDoc = objword.Documents.Add("D:\forret\brev1.doc")
End Sub
Avatar billede jannhomm Nybegynder
12. oktober 2004 - 17:42 #36
Denne ser interessant ud, http://eksperten.dk/spm/485124
men hvordan vælger man de bookmarks der skal bruges ?
Avatar billede mugs Novice
12. oktober 2004 - 17:47 #37
Her kalder du funktionen:

Call InsertAtBookmark(WordDoc, "fornavn", Me!fornavn)

og den funktion måler om Bookmark eksisterer:

If .Exists(strBookmark) Then

Hvis det eksisterer, vil feltet Me!fornavn blive indsat
Avatar billede jannhomm Nybegynder
13. oktober 2004 - 12:12 #38
hvordan vælger jeg så at den skal brevflette alle de breve der er udvalgt ?...

har også prøvet at indsætte

Call InsertAtBookmark(WordDoc, "fornavn", Me!fornavn)

i databasen på http://eksperten.dk/spm/485124 men her konflikter den.
Avatar billede mugs Novice
13. oktober 2004 - 12:47 #39
Mit eksempel der er omtalt i dit link (Jeg tror også du hast fået det), er beregnet til at sende en formular's felter til et Worddokument. Altså kun een enkelt post.

Hvis du vil brevflette, mener jeg det vil være bedre at benytte Word's brevfletnings funktion. Der kan du flette lige så mange poster fra databasen som du vil. Når brevfletningen fungerer, kan du så åbne det ønskede brev fra Access.
Avatar billede jannhomm Nybegynder
13. oktober 2004 - 15:14 #40
Ja det har jeg fået til at virke, men det er jo altid rart at man kan orne det hele fra access. - Jep har fået dit eksempel, kan bare ikke forstå at jeg ikke kan bruge bookmarks i den version der ligger på http://www.makeiteasy.dk/eksempler/Brevfletning.zip
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester