Jeg har et worddokument, som jeg gerne vil skrive ud fra delphi. I Word-dokumentet er det kun et bestemt område, jeg skal skrive ud. Sidetallene på dette område kender jeg ikke.
Jeg har fat i word med det rigtige dokument i fra Delphi, men kan jeg fra delphi angive et udskriftsområde, og så kun skrive dette ud, evt ved hjælp af bookmarks eller sektionsskift, eller er der nogen, der har en bedre ide.
Når der ikke er andre, der gider svare, så må jeg vel hellere selv yde lidt for at få mine points igen. Her er en løsning, jeg nu har fået til at virke, hvis der er andre, der skulle være interesserede.
I projektet skal der først vælges "Import Type libary", og her importeres "Microsoft Word x.x object libary"
begin // assign OleObject try Button2.Enabled := False; try WordApp := GetActiveOleObject('Word.Application'); except on EOleSysError do try WordApp := CreateOleObject('Word.Application'); except on EOleSysError do begin Exit; end; end; end;
WordApp.Visible := False;
// open doc file try WordApp.Documents.open(ExtractFilePath(ParamStr(0)) + 'filnavn.doc'); // dokumentet ligger samme sted som programmets exe-fil Doc := WordApp.ActiveDocument; except on E:EOleException do // doc file not found begin MessageDlg(E.Message, mtError, [mbOk], 0); Exit; end; end;
BookmarkName := 'bogmærkenavn'; // navnet på det bogmærke, på den side, hvor der skal udskrives fra if Doc.Bookmarks.Exists(BookmarkName) then begin R := Doc.Bookmarks.Item(BookmarkName).Range; // Hent sidenummeret, hvor bogmærket er StartSide := R.Information[wdActiveEndPageNumber]; // Antal sider i dokumentet. Jeg vil skrive ud fra bogmærket // og resten af dokumentet. SlutSide := WordApp.ActiveDocument.Content.Information [wdNumberOfPagesInDocument];
{ Hvis det i stedet kun er teksten mellem to bogmærker, der skal skrives ud, kan det gøres med en selection mellem to bogmærker R := WordApp.ActiveDocument.Range(Doc.Bookmarks.Item('UdskrivStart').Range.Start, Doc.Bookmarks.Item('UdskrivSlut').Range.End); R.Select;
end; finally if not VarIsEmpty(WordApp) then begin Doc.Close; WordApp.DisplayAlerts := False; WordApp.Quit; end; Button2.Enabled := True;
end;
end;
Synes godt om
Ny brugerNybegynder
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.