Jag har för mig att jag har sett ett exempel här om hur man skapar rapporter i Word med VB, men kan inte hitta det... Det var jag som frågade en gång i tiden och är nu glad att jag kan svara på denna fråga. Tack, det fungerar bra, men hur gör man för att söka i dokumentet? Jag har inte lyckats hitta den metoden än... Kanske ett alternativ då är att skriva till en TXT-fil istället. Då kan läsa från filen och ställa villkor på det som finns i filen. Jag löste det nu. Jag vill ha så att man kan formatera dokumentet i Word och att programmet bara fyller i informationen. Såhär blev det:Rapport i Word från VB
Jag vill alltså skapa en mall i Word som jag formaterar som jag vill ha den, sedan vill jag kunna placera information från en databas i dokumentet. Antar att man ska använda Word.Application för att göra detta, men hur?
/JohanSv: Rapport i Word från VB
Dim D As Word.Document
Dim W As Word.Application
Set W = CreateObject("Word.Application")
Set D = W.Documents.Add
MousePointer = vbHourglass
W.Selection.TypeText ("RAPPORT") 'Rubrik i rapporten
W.Selection.TypeText (vbCrLf) 'Ny rad
W.Selection.TypeText (vbCrLf)
rs.MoveFirst
While Not rs.EOF
If Not IsNull(rs.Fields("NAMN").Value) Then 'Kontrollera att data finns i fältet
W.Selection.TypeText rs.Fields("NAMN").Value 'Skriv fältets data till Word
End If
W.Selection.TypeText (" ") 'Gör mellanrum
If Not IsNull(rs.Fields("ADRESS").Value) Then
W.Selection.TypeText rs.Fields("ADRESS").Value
End If
W.Selection.TypeText (vbCrLf) 'Ny rad
W.Selection.TypeText (vbCrLf)
W.Selection.TypeText (vbCrLf)
rs.MoveNext
Wend
Set D = Nothing
W.Visible = True
MousePointer = vbDefault
I avslutaknappen
W.Quit False
Set W = NothingSv: Rapport i Word från VB
/JohanSv: Rapport i Word från VB
Sv: Rapport i Word från VB
<code>
Dim fldTmp As ADODB.Field
Dim WordDoc As Word.Document
Dim WordApp As Word.Application
Dim WordRange As Word.Range
Set WordApp = CreateObject("Word.Application")
Set WordDoc = WordApp.Documents.Open(App.Path & "\BrevMall.doc", , True, False)
For Each fldTmp In rstAdr.Fields
Set WordRange = WordApp.ActiveDocument.Content
WordRange.Find.Execute FindText:="<" & fldTmp.Name & ">", Forward:=True
If WordRange.Find.Found = True Then
WordRange = fldTmp.Value
End If
Next
rstDiv.Open "qryGetTel " & rstAdr("ID"), con, adOpenForwardOnly, adLockReadOnly
Set WordRange = WordApp.ActiveDocument.Content
WordRange.Find.Execute FindText:="<Tel>", Forward:=True
If WordRange.Find.Found = True Then
WordRange = ""
Do Until rstDiv.EOF
WordRange = WordRange & rstDiv("strAnt") & ": " & rstDiv("strTel") & vbCrLf
rstDiv.MoveNext
Loop
End If
rstDiv.Close
WordApp.Visible = True
Set WordRange = Nothing
Set WordDoc = Nothing
Set WordApp = Nothing
</code>
/Johan