Newsgroup: it.comp.lang.delphi
Titolo: OLE Automation - Numero di copie

Allora, in un programma scritto in D6 uso Ole Automation per produrre delle
stampe in Word (uso Word97 ma funziona anche con il 2k).
In pratica uso dei template RTF , poi vado a fare sostituzioni varie e
attraverso il seguente codice stampo o visualizzo l'anteprima in Word :
var
   v         : OleVariant;
.
.
.
begin
.
.
.
   // STAMPA DIRETTA
   if Tipo_Operazione = 0 then
   begin
      v.Visible:=false;
      v.wordbasic.fileopen(sOutFile);
      v.Wordbasic.fileprint;
      sleep(5000);
      v.Wordbasic.fileexit;
   end;
   // VISUALIZZAZIONE
   if Tipo_Operazione = 1 then
   begin
      v.Visible:=true;
      v.WordBasic.FileOpen(sOutFile);
   end;
.
.
end;
Ora, di alcune di queste stampe dovrei produrre più di una copia.
Avrei una mezza idea utilizzando le Apine, ma gradirei anche altri
suggerimenti, magari se fosse possibile farlo con OLE....
Se faccio la stampa diretta posso anche sar partire 2 volte da codice il
prcesso di stampa ma nel caso del preview......
Ciao e grazie.

usando questa sintassi:
v.wordbasic.fileopen(sOutFile);
ti agganci ad un qualcosa che zio billy mantiene x compatibilità con le
vecchie versioni di word.
A partire da office97 esiste un server ole documentato nella guida vba.
In particolare, esiste un metodo pritout supportato da document.
Questo pezzo che trovi di seguito è un estratto da:
vbawrd9.chm
che trovi in:
C:\Programmi\Microsoft Office\Office\1040
espressione.PrintOut(Background, Append, Range, OutputFileName, From, To,
Item, Copies, Pages, PageType, PrintToFile, Collate, FileName,
ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow,
PrintZoomPaperWidth, PrintZoomPaperHeight)
espressione   Obbligatoria. Espressione che restituisce un oggetto
Application, Document o Window.
Background   Valore Variant facoltativo. True per proseguire nell'esecuzione
della macro durante la stampa del documento in Microsoft Word.
Append   Valore Variant facoltativo. True per aggiungere il documento
specificato al nome file indicato dall'argomento OutputFileName. False per
sovrascrivere il contenuto di OutputFileName.
Range   Valore Variant facoltativo. L'intervallo di pagine. Può essere
rappresentato da una delle seguenti costanti WdPrintOutRange:
wdPrintAllDocument, wdPrintCurrentPage, wdPrintFromTo, wdPrintRangeOfPages o
wdPrintSelection.
OutputFileName   Valore Variant facoltativo. Se PrintToFile è impostato su
True, l'argomento specifica il percorso e il nome del file di output.
From   Valore Variant facoltativo. Il numero della pagina iniziale quando
Range è impostato su wdPrintFromTo.
To   Valore Variant facoltativo. Il numero della pagina finale quando Range
è impostato su wdPrintFromTo.
Item   Valore Variant facoltativo. L'elemento da stampare. Può essere
rappresentato da una delle seguenti costanti WdPrintOutItem:
wdPrintAutoTextEntries, wdPrintComments, wdPrintDocumentContent,
wdPrintKeyAssignments, wdPrintProperties o wdPrintStyles.
Copies   Valore Variant facoltativo. Il numero di copie da stampare.
Pages   Valore Variant facoltativo. I numeri di pagina e gli intervalli di
pagine da stampare, separati da virgole. Immettendo "2, 6-10", ad esempio,
verrà stampata la pagina 2 e le pagine dalla 6 alla 10.
PageType   Valore Variant facoltativo. Il tipo di pagina da stampare. Può
essere rappresentato da una delle seguenti costanti WdPrintOutPages:
wdPrintAllPages, wdPrintEvenPagesOnly o wdPrintOddPagesOnly.
PrintToFile   Valore Variant facoltativo. True per inviare a un file le
istruzioni per la stampante. Assicurarsi di aver specificato un nome file
con l'argomento OutputFileName.
Collate   Valore Variant facoltativo. Quando si stampano più copie di un
documento, impostare su True per stampare tutte le pagine del documento
prima di stampare la copia successiva.
FileName   Valore Variant facoltativo. Percorso e nome del file da stampare.
Se l'argomento viene omesso, verrà stampato il documento attivo. Disponibile
solo con l'oggetto Application.
ActivePrinterMacGX   Valore Variant facoltativo. Argomento disponibile
esclusivamente in Microsoft Office 98 per Macintosh. Per ulteriori
informazioni su questo argomento, consultare la Guida di riferimento al
linguaggio inclusa in Microsoft Office 98 per Macintosh.
ManualDuplexPrint   Valore Variant facoltativo. True per stampare un
documento fronte retro con una stampante su cui non è disponibile il kit per
la stampa fronte retro. Se l'argomento è impostato su True, le proprietà
PrintBackground e PrintReverse verranno ignorate. Utilizzare le proprietà
PrintOddPagesInAscendingOrder e PrintEvenPagesInAscendingOrder per
controllare l'output durante la stampa fronte retro manuale. L'argomento
potrebbe non essere disponibile a seconda del supporto linguistico
selezionato o installato.
PrintZoomColumn   Valore Variant facoltativo. Il numero delle pagine da
adattare orizzontalmente su una pagina. Può essere rappresentato dai valori
1, 2, 3 o 4. Utilizzarlo con l'argomento PrintZoomRow per stampare più
pagine su un singolo foglio.
PrintZoomRow   Valore Variant facoltativo. Il numero delle pagine da
adattare verticalmente su una pagina. Può essere rappresentato dai valori 1,
2, 3 o 4. Utilizzarlo con l'argomento PrintZoomColumn per stampare più
pagine su un singolo foglio.
PrintZoomWidth   Valore Variant facoltativo. La larghezza in base a cui
ridimensionare le pagine stampate, espressa in twip (20 twip = 1 punto; 72
punti = 1 pollice).
PrintZoomHeight   Valore Variant facoltativo. L'altezza in base a cui
ridimensionare le pagine stampate, espressa in twip (20 twip = 1 punto; 72
punti = 1 pollice).
----------------------------------------------------------------------------
Metodo Open
Sintassi 1: Apre il documento specificato e lo aggiunge all'insieme
Documents. Restituisce un oggetto Document.
Sintassi 2: Apre l'oggetto specificato. Se applicata a un oggetto
Subdocument o RecentFile, la Sintassi 2 restituisce un oggetto Document.
Sintassi 1
espressione.Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument,
WritePasswordTemplate, Format, Encoding, Visible)
Sintassi 2
espressione.Open
espressione   Sintassi 1: Obbligatoria. Espressione che restituisce un
oggetto Documents.
Sintassi 2: Obbligatoria. Espressione che restituisce un oggetto OLEFormat,
RecentFile, Subdocument o Version.
FileName   Valore Variant obbligatorio. Il nome del documento. È possibile
specificare il percorso.
ConfirmConversions   Valore Variant facoltativo. Impostare su True per
visualizzare la finestra di dialogo Conversione file se il file non è in
formato Microsoft Word.
ReadOnly   Valore Variant facoltativo. Impostare su True per aprire il
documento in sola lettura.
AddToRecentFiles   Valore Variant facoltativo. Impostare su True per
aggiungere il nome del file all'elenco degli ultimi file utilizzati nella
parte inferiore del menu File.
PasswordDocument   Valore Variant facoltativo. La password per l'apertura
del documento.
PasswordTemplate   Valore Variant facoltativo. La password per l'apertura
del modello.
Revert   Valore Variant facoltativo. Determina le operazioni che verranno
eseguite se Name è il nome di file di un documento aperto. Impostare su True
per ignorare le eventuali modifiche non salvate apportate al documento
aperto e quindi riaprire il file. False per attivare il documento aperto.
WritePasswordDocument   Valore Variant facoltativo. La password per il
salvataggio delle modifiche apportate al documento.
WritePasswordTemplate   Valore Variant facoltativo. La password per il
salvataggio delle modifiche apportate al modello.
Format   Valore Variant facoltativo. Il convertitore di file da utilizzare
per aprire il documento. Può essere rappresentato da una delle seguenti
costanti WdOpenFormat: wdOpenFormatAllWord, wdOpenFormatAuto,
wdOpenFormatDocument, wdOpenFormatEncodedText, wdOpenFormatRTF,
wdOpenFormatTemplate, wdOpenFormatText, wdOpenFormatUnicodeText o
wdOpenFormatWebPages. Il valore predefinito è wdOpenFormatAuto.
Per specificare un formato di file esterno, applicare la proprietà
OpenFormat a un oggetto FileConverter per determinare il valore da
utilizzare con questo argomento.
Encoding   Valore Variant facoltativo. La codifica del documento (tabella
codici o set di caratteri) da utilizzare quando si visualizza il documento
salvato. Può essere rappresentato da qualsiasi costante MsoEncoding valida.
Per visualizzare l'elenco delle costanti MsoEncoding valide, utilizzare il
Visualizzatore oggetti dell'editor di Visual Basic. Il valore predefinito è
la tabella codici di sistema. Valore Long di lettura/scrittura.
Visible   Valore Variant facoltativo. True se il documento viene aperto in
una finestra visibile. Il valore predefinito è True.
Ribadisco:
la guida vba di office NON VIENE installata dalla installazione predefinita
di office stesso.
Quindi, in linea di massima tu dovresti scrivere una cosa di questo tipo:
var
  WordServer: IDispatch;
  AlrreadyOpen: boolean;
  MyWordDoc: OleVariant;
const
  WordClass = 'Word.Application';
begin
AlreadyOpen := True;
try
  WordServer := GetActiveOleObject(WordClass);
except
  on E:EOleException do begin
    WordServer := CreateOleObject(WordClass);
    AlreadyOpen := False;
    WordServer.Visible := False; // nascondi istanza di word
  end;
end;
MyWordDoc := WordServer.Open(......);
MyWordDoc.printOut(...)
MyWordDoc.Close;
if Not AlreadyOpen then
  WordServer.Close
else
WordServer := Nil;
MyWordDoc := Nil;
end;
Bye
A.