 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Juan1 Invitado
|
Publicado: Vie 21 May, 2004 5:16 am Asunto: Reemplazar texto en Word Automatizacion OLE!! |
|
|
Hola:
Buscando en la red me encontre con este codigo en Delphi, que hace justo lo que necesito, abrir un documento de word existente y reemplazar en el una serie de palabras y guardar dicho docuemento con un nuevo nombre, el problema es que no se como pasarlo a C++ Builder 6.0, me pregunto si sera posible incluir una unidad de codigo Delphi(Object Pascal) en mi projecto para luego invocar la funcion que hace lo que necesito desde una unidad .CPP...??
este es el codigo:
| Código: |
uses
ComObj;
// Replace Flags
type
TWordReplaceFlags = set of (wrfReplaceAll, wrfMatchCase, wrfMatchWildcards);
function Word_StringReplace(ADocument: TFileName; SearchString, ReplaceString: string; Flags: TWordReplaceFlags): Boolean;
const
wdFindContinue = 1;
wdReplaceOne = 1;
wdReplaceAll = 2;
wdDoNotSaveChanges = 0;
var
WordApp: OLEVariant;
begin
Result := False;
{ Check if file exists }
if not FileExists(ADocument) then
begin
ShowMessage('Specified Document not found.');
Exit;
end;
{ Create the OLE Object }
try
WordApp := CreateOLEObject('Word.Application');
except
on E: Exception do
begin
E.Message := 'Word is not available.';
raise;
end;
end;
try
{ Hide Word }
WordApp.Visible := False;
{ Open the document }
WordApp.Documents.Open(ADocument);
{ Initialize parameters}
WordApp.Selection.Find.ClearFormatting;
WordApp.Selection.Find.Text := SearchString;
WordApp.Selection.Find.Replacement.Text := ReplaceString;
WordApp.Selection.Find.Forward := True;
WordApp.Selection.Find.Wrap := wdFindContinue;
WordApp.Selection.Find.Format := False;
WordApp.Selection.Find.MatchCase := wrfMatchCase in Flags;
WordApp.Selection.Find.MatchWholeWord := False;
WordApp.Selection.Find.MatchWildcards := wrfMatchWildcards in Flags;
WordApp.Selection.Find.MatchSoundsLike := False;
WordApp.Selection.Find.MatchAllWordForms := False;
{ Perform the search}
if wrfReplaceAll in Flags then
WordApp.Selection.Find.Execute(Replace := wdReplaceAll)
else
WordApp.Selection.Find.Execute(Replace := wdReplaceOne);
{ Save word }
WordApp.ActiveDocument.SaveAs(ADocument);
{ Assume that successful }
Result := True;
{ Close the document }
WordApp.ActiveDocument.Close(wdDoNotSaveChanges);
finally
{ Quit Word }
WordApp.Quit;
WordApp := Unassigned;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Word_StringReplace('C:\Test.doc','Old String','New String',[wrfReplaceAll]);
end;
|
De antemano muhcas gracias,
Saludos.
Bye. |
|
| Volver arriba |
|
 |
americo_bcb Lt

Registrado: 05 May 2004Mensajes: 84
|
Publicado: Vie 21 May, 2004 4:23 pm Asunto: Si se puede |
|
|
Holas Juan
ante tu pregunta
| Cita: | | me pregunto si sera posible incluir una unidad de codigo Delphi(Object Pascal) en mi projecto para luego invocar la funcion que hace lo que necesito desde una unidad .CPP...?? |
Que yo sepa si se puede incluir una unidad Pascal en el C++ Builder lo que necesitas es agregarla a tu proyecto compilarla y despues te genera un archivo de cabecera el cual puedes agregar en la unidad donde haras uso de la rutina que necesitas.
Americo
C++Builder lo Mejor de lo Mejor |
|
| Volver arriba |
|
 |
Juan1 Invitado
|
Publicado: Vie 21 May, 2004 8:20 pm Asunto: ? |
|
|
Hola, garciaspor la ayuda, estoy intentando compilar la unidad pero me da errorres, el codigo que puse en el post anterior esta tal yo como lo encontre entonces no creo que hayan errores, asi que debo estar integrando la unidad .pas mal...alguien puede decirme como enlazar la unidad .pas a mi prigrama??
Mil gracias por lla ayuda,
Saludos. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
|
| Volver arriba |
|
 |
Juan1 Invitado
|
Publicado: Sab 22 May, 2004 5:19 am Asunto: Hnmmmmmmmmmm, |
|
|
Hola _Leo gracias por tu respuesta,
para imprmir el documento llamado Plantillla, al que haces referencia en el codigo del post anterior podriamos usar algo como esto:
| Código: |
vDocumento.OleProcedure("Print");
|
De antemano gracias,
Saludos. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|