FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ubicar cursor en word
hola amigos, resulta que tengo una plantilla en word en la cual deseo insertar unos datos, ojala usando los componentes WordApplication, WordDocument.
El hecho es que primero debo hubicar el cursor en la pocision del documento donde deseo insertar la informacion, esto no lo he podido hacer; me apeno de mi ignorancia, pero de verdad he buscado durante horas y horas con el google, altavista, mamma y no he encontrado algo que me funcione. imagino que debe haber alguna funcion que me permita hacer esto con coordenadas en x,y. de todas maneras agradesco de ante mano cualquier ayuda que me puedan brindar, seria muy bueno algun link si es que existe, donde muestren las funciones relacionadas con la automatizacion de word y como se usan; bueno en ultimas cualquier ayuda es cariño. gracias por su tiempo.....
__________________
documentos de word |
#2
|
|||
|
|||
he pero nadie que me eche un empujon con esto, acaso sera que no hay algun lugar donde uno pueda encontrar documentacion de soporte sobre los componentes con los que se maneja el word?
__________________
documentos de word |
#3
|
|||
|
|||
Si, la MSDN de Microsoft, y también una búsqueda por Google arroja buenos resultados, también los foros de club builder
Código:
http://www.areabuilder.com Código:
#if (__BORLANDC__ >= 0x0530) #include <Comobj.hpp> #else #include <oleauto.hpp> // BCB 1 #endif ...... Variant vWord, vDocumentos, vDocumento, vSeleccion, vBuscar; String sPath = ExtractFilePath( Application->ExeName ); String sFicheroPlantilla = sPath + "plantilla.doc"; String sFicheroGenerado = sPath + "plantilla2.doc"; //--- Abre Word vWord = CreateOleObject( "Word.Application" ); vWord.OlePropertySet( "Visible", !checkGuardar->Checked ); //--- Abre el documento que usaremos como plantilla vDocumentos = vWord.OlePropertyGet( "Documents" ); vDocumento = vDocumentos.OleFunction( "Open", sFicheroPlantilla.c_str(), // Documento false, // Confirmar conversiones true, // Modo se solo lectura false, // Añadir al menu de ficheros recientes "" // Clave del documento ); //--- Selecciona todo el documento para reemplazar vSeleccion = vWord.OlePropertyGet( "Selection" ); vSeleccion.OlePropertyGet( "Range" ).OleProcedure( "SetRange", 0, 0 ); vBuscar = vSeleccion.OlePropertyGet( "Find" ); vBuscar.OleProcedure( "ClearFormatting" ); vBuscar.OlePropertyGet( "Replacement" ).OleProcedure( "ClearFormatting" ); //--- sustituimos una palabra // Aqui podemos meter el bucle que va a ir reemplanzando palabras vBuscar.Exec( Procedure( "Execute" ) << "{{nombre}}" // Texto a buscar << VT_EMPTY // Coincidir mayusculas y minusculas << VT_EMPTY // Solo palabras completas << VT_EMPTY // Usar caracteres comodin << VT_EMPTY // Suena como << VT_EMPTY // Todas las formas de la palabra << true // Hacia adelante << VT_EMPTY // Wrap << VT_EMPTY // Format << Edit1->Text.c_str() // Reemplazar con... << 2 // 2 = reemplazar todo ); //--- sustituimos otra palabra vBuscar.Exec( Procedure( "Execute" ) << "{{direccion}}" << VT_EMPTY << VT_EMPTY << VT_EMPTY << VT_EMPTY << VT_EMPTY << true << VT_EMPTY << VT_EMPTY << Edit2->Text.c_str() << 2 ); //--- salvamos automaticamente si procede y cerramos Word if ( checkGuardar->Checked ) { vDocumento.OleProcedure( "SaveAs", sFicheroGenerado.c_str() ); vDocumento.OleProcedure( "Close", 0xFFFFFFFF); vWord.OleProcedure( "Quit" ); ShowMessage("Documento generado."); } vWord = vDocumentos = vDocumento = vSeleccion = vBuscar = Unassigned; Última edición por JAVH fecha: 24-09-2007 a las 22:12:06. |
#4
|
|||
|
|||
hola javh, una vez mas me echas la mano, te lo agradezco mucho.
veras en cuanto a lo de elitistas tienes toda la razón ya lo he notado por que ya he ingresado a ese sitio, pero bueno eso no importa cada quien tiene su forma de ser. oye el problema no es que no encuentre información, ya que si se encuentra, el detalle es que no me funciona la que he encontrado, por ello ando buscando como una especie de manual sobre los componentes visuales con los que se maneja el word "WordApplication, WordDocument", encontre un doc de ayuda "help file" de la empresa que diseño los componentes, pero no es freeware, y por que hago esto?, por que todo lo que encuentro esta compilado sobre delphi, java y paradox y he notado que muchas veces las funciones que ellos usan y la forma como las usan son las mismas que yo empleo y sin embargo a mi no me funcionan. dejame probar tu código, aunque puedo notar que la posición del cursor depende de una palabra previamente determinada.
__________________
documentos de word |
#5
|
|||
|
|||
Si, no te puedes mover libremente como si fuera una pantalla de DOS, solamente por el texto, donde sí puedes moverte libremente es para insertar objetos:
Código para insertar una imagen (tomado también de areabuilder), lo probé y funciona incluso con jpegs. Código:
#include <comobj.hpp> // En versiones anteriores a la 6 ademas la siguiente: // #include <utilcls.h> inline float MmToPoints(float mm) {return mm * 2.83464567;} void __fastcall TForm1::Button1Click(TObject *Sender) { Variant word = GetActiveOleObject("Word.Application"); Variant doc = word.OlePropertyGet("ActiveDocument"); Variant sections = doc.OlePropertyGet("Sections"); Variant footers = sections.OlePropertyGet("First").OlePropertyGet("Headers"); Variant footer = footers.OleFunction("Item", 1 /*wdHeaderFooterPrimary*/); Variant shapes = footer.OlePropertyGet("Shapes"); Variant shape = shapes.OleFunction("AddPicture", "c:\\dir\\imagen.bmp", // ruta a la imagen false, // Vincular imagen al documento? true); // Guardar la imagen vinculada con el documento? // Coordenadas relativas al borde de la página // en este ejemplo a 100 mm. del borde izquierdo y a 10 mm del superior shape.OlePropertySet("RelativeHorizontalPosition", 1 /*wdRelativeHorizontalPositionPage*/); shape.OlePropertySet("Left", MmToPoints(100)); shape.OlePropertySet("RelativeVerticalPosition", 1 /*wdRelativeVerticalPositionPage*/); shape.OlePropertySet("Top", MmToPoints(10)); } |
#6
|
|||
|
|||
tienes todita la razón el código funciona muy bien, te agradezco una vez mas tu ayuda, y por si algo ya me estoy defendiendo con la pos del cursor a punta de tabuladores.
__________________
documentos de word |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Posicionar cursor en word | nacho | Servers | 9 | 10-08-2006 13:30:09 |
Ubicar cursor en un TEdit | supermilloriver | OOP | 1 | 26-07-2006 00:19:52 |
Ubicar un messagebox en pantalla | Ricardo León | Varios | 2 | 26-09-2005 15:01:03 |
Ubicar REgistro insertado dentro de un BD | sierraja | Conexión con bases de datos | 1 | 20-04-2005 19:11:04 |
Ubicar registro con Interbase | BlueSteel | Firebird e Interbase | 3 | 14-09-2004 01:05:44 |
|