drukowanie dokumentów Worda

Odpowiedz Nowy wątek
2004-09-08 22:02

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0
procedure TForm1.Button1Click(Sender: TObject);
var 
  ExcelApp: OLEVariant; 
begin 
  ExcelApp := CreateOleObject('Excel.Application');
  try 
    ExcelApp.Workbooks.Open('C:\xyz.xls'); 
    ExcelApp.ActiveSheet.PageSetup.Orientation := xlLandscape;
    ExcelApp.Worksheets.PrintOut; 
  finally 
    if not VarIsEmpty(ExcelApp) then 
    begin 
      ExcelApp.Quit; 
      ExcelApp := Unassigned; 
    end; 
  end; 
end;

Powyższy kod pobrany jest z http://www.torry.net/

Czy jest ktoś w stanie pomóc bądź dostarczyć informacji na temat wykorzystania tej metody do wydrukowania dokumentów Worda bądź StarOffice'a??
Głównie chodzi o możliwość programowego ustawienia liczby drukowanych kopii dokumentów Word i czy tą metodą można również drukować dokumenty StarOffice'a??

Z góry dziękuje za udzielenie wyczerpującej odpowiedzi lub wskazania miejsca w internecie gdzie mógłbym sie czegoś na ten temat dowiedzieć

Pozostało 580 znaków

2004-09-09 07:38

Rejestracja: 16 lat temu

Ostatnio: 3 lata temu

0

Prawdopodobie (dla Worda, a dla innych podobnie):

procedure TForm1.Button1Click(Sender: TObject);
var 
  ExcelApp: OLEVariant; 
begin 
  ExcelApp := CreateOleObject('Word.Application');
  try 
    ExcelApp.Workbooks.Open('C:\xyz.doc'); 
    ExcelApp.ActiveSheet.PageSetup.Orientation := xlLandscape;
    ExcelApp.Worksheets.PrintOut; 
  finally 
    if not VarIsEmpty(ExcelApp) then 
    begin 
      ExcelApp.Quit; 
      ExcelApp := Unassigned; 
    end; 
  end; 
end;

nazwy zmiennych sobie sam pozmieniaj, bo one nie mają żadnego znaczenia

Pozostało 580 znaków

2004-09-09 13:35

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

Nie wiem WeeR czy zauważyłeś ale word ma odmienną strukturę dokumentu od excella, i polecenia workbook i worksheet raczej nie sprawdzą sie w wordzie.

Czy jest ktoś ko udzieli mi na ten temat informacji lub wskaże miejsce gdzie można je znaleźć??????

Pozostało 580 znaków

Watson
2004-09-09 14:21
Watson
0

Spróbuj wstawić z zakładki servers komonenty wordapplication i worddocument
i spróbuj dopisac coś takiego, u mnie drukowało;)

procedure TForm1.Button1Click(Sender: TObject);
var
WordApp: OLEVariant;
nazwapliku: OleVariant;
t,f:olevariant;
begin
wordapplication1.Connect; //polaczenie z wordem
wordapplication1.Visible:=true; //otwiera sie okno worda
worddocument1.Connect;
nazwapliku:='f:\cos.doc';
worddocument1.ConnectTo(WordApplication1.Documents.Open(nazwapliku, EmptyParam, t, f, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, f));
//wczytanie dokumentu
worddocument1.PrintOutOld; //drukowanie
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
WordApplication1.Disconnect;
worddocument1.Disconnect;
end;

Pozostało 580 znaków

2004-09-09 15:26

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

Watson DZIĘKI.
O cos takiego mi chodziło, rozbudowałem Twoją procedurę o następujące elementy:

zamiast:
wordapplication1.Visible:=True;
dałem:
wordapplication1.Visible:=False;
ponieważ otworzenie Worda w danym momencie jest zbyteczne.

A drugą rzeczą było rozbudowanie funkcji drukowania:
zamiast:
worddocument1.PrintOutOld;
wrzuciłem
worddocument1.PrintOutOld(EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, Copies);

gdzie Copies oznacza liczbę kopi dokumentu do wydrukowania, a to był główny powód szukania ratunku w dokumentach Worda

Dzięki za cenną wskazówkę

Pozostało 580 znaków

2004-09-09 16:33

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

Jeszcze jedno pytanko.
Procedurka Watsona działa tak jak powinna.
Jest jeden problem.
Po zakończeniu wszelkich zadań w Wordzie na liście procesów w menedżerze zadań Windows pozostaje wpis WINWORD.EXE, czyli proces w zasadzie nie jest zakończony.
Zatem jak skutecznie można wyeliminować tą niedogodność??

Pozostało 580 znaków

2004-09-09 22:41

Rejestracja: 15 lat temu

Ostatnio: 11 lat temu

0

Maz racje, w menedżerze pozostaje wpis WINWORD.EXE, spróbuj zamienić procedurke
procedure TForm1.FormDestroy(Sender: TObject);
begin
WordApplication1.Disconnect;
worddocument1.Disconnect;
end;

na procedurke

procedure TForm1.FormDestroy(Sender: TObject);
begin
WordApplication1.quit;
WordApplication1.Disconnect;
worddocument1.Disconnect;
end;

u mnie pomogło;)!!

Pozostało 580 znaków

2004-09-10 06:52

Rejestracja: 15 lat temu

Ostatnio: 8 lat temu

0

U mnie też pomogło, DZIĘKI [hurra]

Pozostało 580 znaków

2006-04-11 12:55

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Witajcie Forumowicze.
Borykam się z problemem jak przekazać do pliku worda parametry...
Chodzi mi o coś takiego mam dokument zapisany w pliku doc w nim jest tabelka i dwa pola imie i nazwisko, owe pola chciałbym wypełnić danymi podawanymi jako parametr np. winword c:\dokument.doc Jan Kokosik (uruchomione przez shellexecute) lub jak podano w przykładzie wyżej.
Pozdrawiam.

Witajcie.
Kombinowałem z wyżej postawionym problemem i nie dałem mu rady :/ ale ?urodził? się nowy pomysł jak umieścić na końcu strony tabele dwie kolumny i dwa wiersze (przyjmując że połowa strony dokumentu .doc jest już zajęta jakimś tekstem)
Pierwsza kolumna pierwszy wiersz na stałe wpisane Imię, pierwsza kolumna drugi wiersz
Nazwisko wpisane na stałe (jako opis), teraz druga kolumna pierwszy wiersz wpisanie stringu ze zmiennej i to samo druga kolumna drugi wiersz.
Moje pytanie jest takie, jak ?utworzyć? tabele i wypełnić jej pola w istniejącym już doc-u na końcu strony.
Proszę o info, sugestie, faq, przyład co macie ;)
Pozdrawiam

Pozostało 580 znaków

2006-04-13 09:01

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Witam.
doszłem do dopisywania nowej lini, kożystając z kodu podanego przez Pana Watson
wygląda to tak:
begin{begin4}
nazwapliku:=ExtractFilePath(Application.ExeName)+'\'+nazwadoku+'.doc';
wordapplication1.Connect; //polaczenie z wordem
wordapplication1.Visible:=true; //otwiera sie okno worda
worddocument1.Connect;
worddocument1.ConnectTo(WordApplication1.Documents.Open(nazwapliku, EmptyParam, t, f, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, f)); //wczytanie dokumentu

WordApplication1.Selection.TypeText('dopisany nowy tekst'); //dopisana nowa linia

           Worddocument1.PrintOutOld;  //drukowanie
           WordApplication1.quit;
           WordApplication1.Disconnect;
           worddocument1.Disconnect;

end;

Moje pytanie "jak przeskoczyć na koniec dokumentu i jak wstawić tabele" ?
Bo teraz dopisuje tekst na samym początku :/
(ps. nie edytuje postu bo nie pojawił by sie jako pierwszy ;) )
Pozdrawiam

Siemanko.
Udało mi się posklejać taki kodzik...
Mam kolejne pytanie, jak obejść komunikat przy zamykaniu dokumentu bo w tej chwili word pyta czy zapisać zmiany czy anulować....
I jeszcze jedno w tej chwili tabela tworzy mi się na początku dokumentu (przed tekstem który już istnieje w doku) jak mam więc wstawić tą tabele na koniec.
Podziękowanie dla Pana ?jozkan? za pomoc !!!
Pozdro

Uses ComObj;
var
WordApp,WordTable,Doc: OLEVariant;
nazwapliku: OleVariant;
t,f: OleVariant;
nrfaktury:integer;
data:string;
i, j: Integer;
begin
nazwapliku:=ExtractFilePath(Application.ExeName)+'\'+plik+'.doc';
WordApp := CreateOleObject('Word.Application');
WordApp.Visible:=true;
WordDocument1.ConnectTo(WordApplication1.Documents.Open(nazwapliku, EmptyParam, t, f, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, f)); //wczytanie dokumentu

// WordDocument1.Content.InsertAfter(#13);
WordTable :=WordDocument1.Tables.Add(WordApplication1.Selection.Range, 2, 2,EmptyParam,EmptyParam);
for i := 1 to 2 do
for j := 1 to 2 do
begin
if ((i=1) and (j=1)) then WordTable.Cell(i, j).Range.Text:='Imię :';
if ((i=1) and (j=2)) then WordTable.Cell(i, j).Range.Text:=zmienna_imie;
if ((i=2) and (j=1)) then WordTable.Cell(i, j).Range.Text:= 'Nazwisko :';
if ((i=2) and (j=2)) then WordTable.Cell(i, j).Range.Text:=zmienna_nazwisko;
end;

  • worddocument1.PrintOutOld; *drukowanie
    Sleep(1000);
    WordApplication1.Quit;
    WordApplication1.Disconnect;
    worddocument1.Disconnect;
    end;

Podpowiedzcie mi jak mam dodać tą tabelkę za istniejącym tekstem w doku bo już nic mi do pustej głowy nie przychodzi :/
pozdro

Pozostało 580 znaków

2006-04-18 13:31

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

0

Witam.
Dostałem dziś drukare i testuje ten kodzik co podałem wyżej.. jednym słowem klocek :( tabela niby w wordzie jest ale na wydruku jej nie ma tylko sam tekst z jej krotek się drukuje [???]
A temat z wydrukowaniem tabeli za teksem już istniejącym nadal aktualny, jak też z zamknięciem worda bez pytania czy zapisać zmiany.
Mądre głowy proszę help me ;(

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0