02. december 2001 - 15:39Der er
23 kommentarer og 1 løsning
Indsæt felter fra Access i Word
I fortsættelse af tidligere hjælp her, har jeg strikket en lille rutine sammen, der åbner Word og smider felter fra Access ind i bogmærker i Word, menjeg mangler lige lidt hjælp. Hvis Worddokumentet ikke indeholder alle bogmærkerne, stopper \"compileren\" med fejl, hvordan testes der ud af det? Nogen gode forslag?
Private Sub Kommandoknap12_Click() Dim myword As Word.Application Dim aConverter As Variant Dim I As Integer Dim filplacering As String \'Stien til dokumentet filplacering = readconstant(\"P1\") Set myword = New Word.Application \'Åbn dokument myword.Documents.Open filename:=filplacering \'Bogmærker myword.ActiveDocument.Bookmarks(\"Companyname\").Select myword.Selection.TypeText Text:=Me!Companyname myword.ActiveDocument.Bookmarks(\"Adress1\").Select myword.Selection.TypeText Text:=Me!Adress1 myword.ActiveDocument.Bookmarks(\"Adress2\").Select myword.Selection.TypeText Text:=Me!Adress2 myword.ActiveDocument.Bookmarks(\"PostalCode\").Select myword.Selection.TypeText Text:=Me!Postalcode myword.ActiveDocument.Bookmarks(\"City\").Select myword.Selection.TypeText Text:=Me!City myword.Visible = True Set myword = Nothing End Sub
Måske senere, jeg må lige ud med hunden og have lidt at spise. Og dog, du skal lige førge for at have referencen til myword.activedocument iorden. Måske skal du ikke lave det som en funktion i første omgang, men først prøve at indkoporere det et sted i din eksisterende kode.
Var det ikke et spørgsmål hvor du tog lidt svar fra mig og lidt fra en anden? Så vidt jeg husker, havde jeg lavet 2 procedürer til at indsætte data ved hjælp af bogmærker. Den første som definerede data i bogmærker. Denne kaldte derefter en anden procedüre, der afgjorde om bogmærker eksisterede i dit Word-dokument. Eksisterede bogmærket blev data indsat - ellers ikke.
>Mugs du har jo fuldstændig ret, jeg måtte imidlertid dit absolut udmærkede forslag, fordi jeg skulle have funktionen \"filplacering\" til at hente stinavn m.m. i forbindelse med tryk på en tast.
Jeg kunne derfor ikke \"hitte\" ud af din løsning med denne linie:
Set WordDoc = objword.Documents.Add(\"C:\\Documents and Settings\\Søren Wiilsbøll\\Dokumenter\\MGDatabase\\brev1.doc\")
Hvor det i parantesen skulle afløses af ovennævnte, derfor denne omskrivning af div. gode forslag.
Ja - det var jo ikke lige det, der var meningen. Du må nok afvente jassens guldkorn i hvert fald iaften. Jeg har været på arbejde siden kl lo.. imorges, så der er ved at være udsolgt.
OK, selvfølgelig kan det gøres uden absolut at lave errors med vilje. Det her skulle funke, pas på, et par af dine feltnavne og variable hedder noget andet her i min test, så dem skal du lige rette (Address1 i stedet for Adress1 osv.)
Private Sub Command0_Click() Dim myword As Word.Application Dim aConverter As Variant Dim i As Integer Dim filplacering As String \'Stien til dokumentet filplacering = \"d:\\data\\testdokument.doc\" Set myword = New Word.Application \'Åbn dokument myword.Documents.Open filename:=filplacering myword.Documents.Open filplacering \'Bogmærker If ExistBookmark(\"Companyname\", myword.ActiveDocument) Then myword.ActiveDocument.Bookmarks(\"Companyname\").Select myword.Selection.TypeText Text:=Me!Companyname End If
If ExistBookmark(\"Address1\", myword.ActiveDocument) Then myword.ActiveDocument.Bookmarks(\"Address1\").Select myword.Selection.TypeText Text:=Me!Address1 End If
If ExistBookmark(\"Address2\", myword.ActiveDocument) Then myword.ActiveDocument.Bookmarks(\"Address2\").Select myword.Selection.TypeText Text:=Me!Address2 End If
If ExistBookmark(\"Postalcode\", myword.ActiveDocument) Then myword.ActiveDocument.Bookmarks(\"PostalCode\").Select myword.Selection.TypeText Text:=Me!Postalcode End If
If ExistBookmark(\"City\", myword.ActiveDocument) Then myword.ActiveDocument.Bookmarks(\"City\").Select myword.Selection.TypeText Text:=Me!City End If
myword.Visible = True Set myword = Nothing End Sub
Function ExistBookmark(BMname As String, objDoc As Document) As Boolean Dim i As Integer ExistBookmark = False For i = 1 To objDoc.Bookmarks.Count Debug.Print objDoc.Bookmarks(i).Name If objDoc.Bookmarks(i).Name = BMname Then ExistBookmark = True Exit Function End If Next i End Function
>Jassens Det virker fint, giver dog en fejl, hvis et af felterne indeholder en null-værdi (adress2 er ikke altid udfyldt), kan der nemt laves en tilføjelse?
Ja du kan teste på om feltet indeholder nulværdi: IF NOT ISNULL(Me!xxx) THEN ......... END IF Så udføres det kun hvis feltet indeholder en værdi, også hvis den indeholder en blank, hvilket ikke er det samme som nulværdi.
En lille ting mere før jeg går til ro: I Exist-funktionen bør du nok lige checke, om der overhovedet ER nogle bookmarks. IF xxx.bookmarks.count=0 then funktionsnavn = False exit function endif Go\'nat og sov godt
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.