Du skal lave en skabelon i Word. I denne skabelon skal du indsætte tekst de steder, hvor dit program skal skrive noget. Herefter kan du fra Delphi bruge kommandoen "ReplaceText" for at få din variable sat ind et bestemt sted i dokumentet.
procedure TForm3.Button1Click(Sender: TObject); var Test, Test1 : Integer; AString : Variant; WordDokument : String; begin if OpenDialog.Execute then begin WordDokument := Opendialog.FileName; MSWord := CreateOLEObject('Word.Application'); //Word 8 MSWord.Documents.Open(FileName:=Opendialog.FileName, ReadOnly:=True); MSWord.Visible := 1; // Hvis MSWord.Visible = 1 så bliver det vist end; end;
>>nca: Kan du fortælle mig, hvor jeg skal indsætte ReplaceText?
var Template, ItemIndex, VarFalse, Placement, Format: Olevariant; R: Range; Rnge, Searchtext: OleVariant; begin wordapplication1.connect; wordapplication1.visible:=true; VarFalse:=False; Template:='Virusrapport.dot'; WordApplication1.Caption := 'Delphi virusrapport'; WordApplication1.Documents.Add(Template,Varfalse); WordApplication1.Options.CheckSpellingAsYouType := False; WordApplication1.Options.CheckGrammarAsYouType := False; ItemIndex:=1; WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex)); R:= WordDocument1.Range; If not ReplaceText('<Måned>',maaned,R) then ShowMessage('Kan ikke indsætte månedsnavn i rapporten!'); If not ReplaceText('<År>',Aar,R) then ShowMessage('Kan ikke indsætte årstallet i rapporten!'); If not ReplaceText('<antal>',IntToStr(Alarmer),R) then ShowMessage('Kan ikke indsætte antal vira i rapporten!'); Placement:=wdInLine; Format := wdPasteBitmap; R:=Worddocument1.Paragraphs.Item(7).Range; Clipboard.Assign(Image1.Picture.Bitmap); R.PasteSpecial(EmptyParam, EmptyParam, Placement,EmptyParam, Format, EmptyParam, EmptyParam); //Worddocument1.InlineShapes.AddPicture('C:\Dump1.bmp',EmptyParam, EmptyParam, R); } R:=Worddocument1.Paragraphs.Item(12).Range; Clipboard.Assign(Image2.Picture.Bitmap); R.PasteSpecial(EmptyParam, EmptyParam, Placement,EmptyParam, Format, EmptyParam, EmptyParam); end;
Har du oprettet en ny skabelon i Word? Du kan se, at jeg bruger én der hedder VirusRapport.doc. Inde i skabelonen har jeg skrevet <Måned> (Husk <>). Så laver jeg ReplaceText('<Måned>',maaned,R), hvor maaned er en strengvariable fra Delphi, som altså bliver indsat på det sted, hvor der står <Måned> i skabelonen. Jeg kan ikke huske hvad R står for.
Der er oprettet 3 bookmarks i worddokumentet: BmNavn, BmAdresse og BmPostNr.
Nu bliver teksten lige nøjagtigt placeret hvor jeg vil have dem.
>>nca, du får alligevel points, som tak for hjælpen.
Det er jo ved at være jul :-)
procedure TForm3.Button1Click(Sender: TObject); var WordDokument : String; Range :Variant; begin if OpenDialog.Execute then begin WordDokument := Opendialog.FileName; MSWord := CreateOLEObject('Word.Application'); //Word 8 MSWord.Documents.Open(FileName:=Opendialog.FileName, ReadOnly:=False); MSWord.Visible := 1; // MSWord bliver vist
// Denne metode kræver at der i word dokumentet er oprettet bookmarks. MSWord.ActiveDocument.Bookmarks.Item('BmNavn').Select; Range := MsWord.Selection.Range; Range.insertAfter('Personens navn');
MSWord.ActiveDocument.Bookmarks.Item('BmAdresse').Select; Range := MsWord.Selection.Range; Range.insertAfter('Personens adresse'); MSWord.ActiveDocument.Bookmarks.Item('BmPostNr').Select; Range := MsWord.Selection.Range; Range.insertAfter('Personens postnummer og by'); end; end;
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.