¿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