PDA

Ver la Versión Completa : Modificar margenes en Word


jzk
06-09-2005, 09:51:35
Hola a tod@s,

Estoy intentando poder bajar los márgenes de un documento Word pero no encuentro la manera. Rebuscando, rebuscando, he encontrado lo siguiente:

WinWord.Selection.PageSetup.TopMargin

pero me da el siguiente error :

exception EOleException with message "TopMargin" no es ningún método
Hasta ahora siempre me había valido de las macros de Word para ver como ejecutar ciertos comando en Delphi, pero esta vez no encuentro la solución.

¿Sabeís como hacerlo?, gracias.

roman
06-09-2005, 15:39:35
Creo que en lugar de Selection debe ser Section. A mi me ha funcionado con

Document.TopMargin

ó

Document.Sections.TopMargin

Y si deseas aplicarlo a una sección específica sería

Document.Sections.Item(NumSeccion).TopMargin

Aquí Document es un OleVariant que apunta al documento:


uses
ComObj;

var
WordApp: OleVariant;
Document: OleVariant;

begin
WordApp := CreateOleObject('word.application.9');
Document := WordApp.Documents.Open('archivo.doc');
end;


// Saludos

jzk
07-09-2005, 12:42:36
Lo primero darte las gracias por el tiempo empleado.
He seguido todos los pasos que me indicas pero lo único que obtengo es otro tipo de error:

Exception EOleError with message 'Method' Topmargin' not supported by automation object'
Hasta ahora la única manera que he encontrado ha sido utilizando un objeto de la paleta Servers TWordApplication, pero claro esto me limita a que luego pueda utilizar comandos como :

WordAppl.WordBasic.EditBookmark
WordAppl.WordBasic.Insert

En fin, que por lo pronto en lugar de subir o bajar márgenes voy a conformarme con añadir o quitar renglones que no es tan eficaz como lo que realmente necesito pero me sirve de parche temporal.

TONIAM
15-09-2005, 10:19:53
En el programa que te comente que estoy haciendo en un informe bajo los margenes asi:

oWord.ActiveDocument.PageSetup.TopMargin := CentimetersToPoints(5);

oWord es un TWordAplication y la funcion es esta

function TFormPRL.CentimetersToPoints(a:Single):Single;
begin

{Converts a measurement from centimeters to points (1 cm = 28.35 points).
Returns the converted measurement as a Single.
Syntax
expression.CentimetersToPoints(Centimeters)
expression Optional. An expression that returns an Application object.
Centimeters Required Single. The centimeter value to be converted to points.}

Result:=28.35*a;

end;

Un saludo
Toni

jzk
15-09-2005, 11:13:06
Gracias por el tiempo dedicado, pero a la solución que me planteablas de
oWord es un TWordAplication
ya la había probado. De hecho lo comento en el correo anterior:

Hasta ahora la única manera que he encontrado ha sido utilizando un objeto de la paleta Servers TWordApplication, pero claro esto me limita a que luego pueda utilizar comandos como :

WordAppl.WordBasic.EditBookmark
WordAppl.WordBasic.Insert
Por lo que no puedo hace uso de ella.

Un saludo.