FAQ Word / Excel

PREGUNTAS



¿Cómo mover el cursor hasta el final de un documento Word?

¿Cómo cambiar el tipo de letra de una celda?

¿Cómo cambiar el color de la tabla?

¿Cómo imprimir sin mostrar el cuadro de diálogo?

Cómo alinear texto en Word

Utilizar Excel a través de la interfaz COM

Utilizar Excel usando OLE

COMPROBAR SI OLE está instalado

¿Cómo exportar una tabla Word a un StringGrid?



RESPUESTAS



¿Cómo mover el cursor hasta el final de un documento Word?


Function EndOfDoc:boolean;


begin


EndOfDoc:=true;


try


W.ActiveDocument.Range.Select;


W.Selection.Start:=W.Selection.End;


except


EndOfDoc:=false;


end;


End;





¿Cómo cambiar el tipo de letra de una celda?




Function SelectCell(Table:integer;


Row,Column:integer):boolean;


begin


SelectCell:=true;


try


W.ActiveDocument.Tables.Item(Table).Columns.Item


 
(Column).Cells.Item(Row).Select;


except


SelectCell:=false;


end;


End;





Function FontToEFont(font:Tfont;EFont:variant;





ColorIndex:integer):boolean;


begin


FontToEFont:=true;


try


EFont.Name:=font.Name;


if
fsBold
in
font.Style


 
then
EFont.Bold:=True 


 
else
EFont.Bold:=False; 


if
fsItalic
in
font.Style


 
then
EFont.Italic:=True


 
else
EFont.Italic:=False; 


EFont.Size:=font.Size; 


if
fsStrikeOut
in
font.Style


 
then
EFont.Strikethrough:=True 


 
else
EFont.Strikethrough:=False; 


if
fsUnderline
in
font.Style


 
then
EFont.Underline:=wdUnderlineSingle 


 
else
EFont.Underline:=wdUnderlineNone; 


EFont.ColorIndex:=ColorIndex; 


except


FontToEFont:=false;


end;


End;





Cuando se selecciona un objeto, podemos cambiar la fuente, para ello utilizamos la siguiente función para la selección de objetos:




Function SetFontSelection(font:Tfont;


ColorIndex:integer):boolean;


begin


SetFontSelection:=true;


try


SetFontSelection:=FontToEFont(font,W.Selection.font,ColorIndex);


except


SetFontSelection:=false;


end;


End;





¿Cómo cambiar el color de la tabla?


W.ActiveDocument.Tables.Item(tab_).Columns.Item(col_).Cells.Item(row_).Borders.Item(wdBorderTop).ColorIndex:=wdDarkRed;





¿Cómo imprimir sin mostrar el cuadro de diálogo?




Function PrintOutDoc(NumCopies:integer):boolean;


begin


PrintOutDoc:=true;


try


W.ActiveDocument.PrintOut(NumCopies);


except


PrintOutDoc:=false;


end;





Cómo alinear texto




W.Selection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;


W.Selection.ParagraphFormat.Alignment:=wdAlignParagraphRight;


W.Selection.ParagraphFormat.Alignment:=wdAlignParagraphJustify;





Utilizar Excel a través de la interfaz COM





EJEMPLO 1 




var
Excel, WorkBook, Sheet: Variant;


begin


Excel :=
CreateOleObject(
'Excel.Application');


Excel.WorkBooks.Open(FileName,False);


WorkBook
:= Excel.WorkBooks.Item[
1];


Sheet :=
Workbook.Sheets.Item[
3];


Sheet.Cells[1,2]:='ASDFG';


Sheet.Cells[2,2]:=230;





EJEMPLO 2


uses


ComObj,
ActiveX;





var


Row,
Col: integer;


DestRange: OleVariant;


Excel:
Variant;





begin


Excel :=
CreateOleObject(
'Excel.Application');


Excel.Visible := True;


Excel.WorkBooks.Add; 


Excel.ActiveSheet.Range['A2', 'B3'].Value := 'Тест';


Excel.ActiveSheet.Range['A4', 'B5'].Value := 42;


Excel.ActiveSheet.Range['A10', 'A11'].Formula := '=RAND()';


Excel.ActiveSheet.Cells.Item[1, 1].Value := 'prueba';





Row:=1;


Col:=3;


Excel.ActiveSheet.Cells.Item[Row, Col].Value := 'prueba';





DestRange := Excel.Range['D6', 'F10'];


Excel.Range['A1', 'C5'].Copy(DestRange);





Excel.Range['A2', 'A2'].Font.Size := 20;


Excel.Range['A2', 'A2'].Font.FontStyle := 'Bold';


Excel.Range['A2', 'A2'].Font.Color := clFuchsia;


Excel.Range['A2', 'A2'].Font.Name := 'Arial';


Excel.Range['B2', 'C6'].Interior.Color := RGB(223,
123, 123);


end;





EJEMPLO 3







uses


ComObj,
ActiveX;





var


Excel:
Variant;


WBk :
OleVariant;


SaveChanges: OleVariant;


begin


Excel :=
CreateOleObject(
'Excel.Application');


Excel.Visible := True;


WBk :=
Excel.WorkBooks.Open(
'C:\Test.xls');




...





WBk.Close(SaveChanges := True);


Excel.Quit;


end;








Utilizar Excel usando OLE







{


Ejemplo para imprimir un archivo utilizando OLE


}


uses


ComObj;





procedure TForm1.Button1Click(Sender: TObject);


var


ExcelApp: OLEVariant;


begin


//
Create an Excel instance


//
Excel Instanz erzeugen


ExcelApp
:= CreateOleObject(
'Excel.Application');


try


  
ExcelApp.Workbooks.Open(
'C:\test\xyz.xls');


  
// you can also modify
some settings from PageSetup


  
// Man kann auch noch
einige Einstellungen von "Seite Einrichten" anpassen


  
ExcelApp.ActiveSheet.PageSetup.Orientation := xlLandscape;


  
// Print it out


  
// Ausdrucken


  
ExcelApp.Worksheets.PrintOut;


finally


  
// Close Excel


  
// Excel wieder
schliessen


  
if
not
VarIsEmpty(ExcelApp)
then


  
begin


    
ExcelApp.Quit;


    
ExcelApp := Unassigned;


  
end;


end;


end;  










//COMPROBAR SI OLE está instalado




if
not
IsOLEObjectInstalled(
'Excel.Application') then


  
ShowMessage(
'no instalado')


else


  
ShowMessage(
'instalado');








function IsOLEObjectInstalled(Name: String): boolean;


var


ClassID:
TCLSID;


Rez :
HRESULT;


begin





Rez :=
CLSIDFromProgID(PWideChar(WideString(
Name)), ClassID);





if
Rez = S_OK
then


  
Result := true


else


  
Result := false;


end;








¿Cómo exportar una tabla Word a un StringGrid?







uses


ComObj;





procedure TForm1.Button1Click(Sender: TObject);


const


AWordDoc
=
'C:\xyz\testTable.doc';


var


MSWord,
Table: OLEVariant;


iRows,
iCols, iGridRows, jGridCols, iNumTables, iTableChosen: Integer;


CellText: string;


InputString: string;


begin


try


  
MSWord := CreateOleObject(
'Word.Application');


except


  
// Error....


   Exit;


end;





try


  
MSWord.Visible := False;


  
MSWord.Documents.Open(AWordDoc);





  
// Get number of tables
in document


  
iNumTables := MSWord.ActiveDocument.Tables.Count;





  
InputString := InputBox(IntToStr(iNumTables) +


    
' Tables in Word
Document'
, 'Please Enter Table
Number'
, '1');


  
// Todo: Validate string
for integer, range...


  
iTableChosen := StrToInt(InputString);





  
// access table


   Table
:= MSWord.ActiveDocument.Tables.Item(iTableChosen);


  
// get dimensions of
table


   iCols
:= Table.Rows.Count;


   iRows
:= Table.Columns.Count;


  
// adjust stringgrid
columns


  
StringGrid1.RowCount := iCols;


  
StringGrid1.ColCount := iRows +
1;





  
// loop through cells


  
for
iGridRows :=
1
to
iRows
do


    
for
jGridCols :=
1
to
iCols
do


    
begin


      
CellText := Table.Cell(jGridCols, iGridRows).Range.FormattedText;


      
if
not
VarisEmpty(CellText)
then


      
begin


        
// Remove Tabs


        
CellText := StringReplace(CellText,


           #$D, '',
[rfReplaceAll]);


        
// Remove linebreaks


        
CellText := StringReplace(CellText, #$7,
'',
[rfReplaceAll]);





        
// fill Stringgrid


        
Stringgrid1.Cells[iGridRows, jGridCols] := CellText;


      
end;


    
end;


  
//..


finally


  
MSWord.Quit;


end;


end;





































No hay comentarios:

Publicar un comentario

Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...