FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Como obtener la posicion actual del cursor en word
Hola,
a ver si me pueden echar una mano con esto... Son unas pruebas que estoy haciendo para después aplicarlas en mi programa. El problema radica en como insertar una tabla en la posicion que yo quiera. Les explico un poco las cosas que he hecho. En primer lugar, creo los objetos Word.Application y Documents (word y doc, respectivamente). Código:
Variant word, doc, Selection, Font, Buscar; word = Variant::CreateObject("Word.Application"); word.OlePropertySet( "Visible", (Variant) true ); doc = word.OlePropertyGet("Documents"); if (FileExists(ExtractFilePath(Application->ExeName)+ "plantillas\\plantilla.doc")) { doc.OleFunction("Open", (ExtractFilePath(Application->ExeName)+ "plantillas\\plantilla.doc").c_str(), Unassigned, true); }else{ MessageBox(this->Handle, "El archivo no existe", "Error" , MB_APPLMODAL | MB_OK | MB_ICONERROR); word.OleProcedure("Quit"); return; } Código:
Selection = word.OlePropertyGet( "Selection" ); Buscar = Selection.OlePropertyGet( "Find" ); Buscar.OleProcedure( "ClearFormatting" ); Buscar.OlePropertyGet( "Replacement" ).OleProcedure( "ClearFormatting" ); Buscar.Exec( Procedure( "Execute" ) << "#NOMBRE#" << VT_EMPTY << VT_EMPTY << VT_EMPTY << VT_EMPTY << VT_EMPTY << true << VT_EMPTY << VT_EMPTY << "Gabo" << 2); Código:
Selection.OleProcedure("TypeText", "Tabla"); doc = word.OlePropertyGet("ActiveDocument"); Variant rango = Selection.OlePropertyGet("Range"); rango.OleProcedure("Collapse", 0); Variant tablas = rango.OlePropertyGet("Tables"); int rows = 2; int cols = 2; Variant tabla = tablas.OleFunction("Add", rango, rows, cols, 1); Variant celda; celda = tabla.OleFunction("Cell", 1, 1); celda.OlePropertyGet("Range").OleProcedure("InsertAfter", "Nombre "); celda = tabla.OleFunction("Cell", 1, 2); celda.OlePropertyGet("Range").OleProcedure("InsertAfter", "Cantidad"); Como para escribir el texto "Tabla" y para obtener el rango para la tabla, utilizo el objeto Selection que cree en un principio. Ambas cosas se insertan al principio del documento cuando lo que en realidad quiero es que se inserten a continuación de la búsqueda y reemplazo. Sé que el rango del objeto Selection se puede cambiar con SetRange. Por ejemplo si después de hacer la búsqueda y reemplazo, pero antes de insertar la palabra "Tabla" escribo lo siguiente: Código:
Selection.OleProcedure( "SetRange", 25, 25); Ahora la pregunta del millón ( ): ¿alquien sabe como obtenerlo? Gracias de antemano a todos.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. Última edición por Gabo fecha: 08-02-2008 a las 13:18:00. |
#2
|
||||
|
||||
Aquí una solución:
Le agregué un marcador al documento (Menú Insertar-Marcador) de nombre Tabla y antes de hacer la inserción que quiero, voy al marcador así: Código:
Selection.Exec(Procedure("GoTo") << (int)wdGoToBookmark << 0 << 0 << "Tabla"); Código:
#include <ComObj.hpp> typedef enum WdGoToItem { wdGoToBookmark = 0xFFFFFFFF, } WdGoToItem;
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
como obtener la hora actual? | gabrielflowers | PHP | 3 | 19-10-2007 22:48:20 |
Obtener la linea actual de Word | aom | Servers | 1 | 17-01-2007 19:51:00 |
Cómo obtener la fecha actual en una sqlquery | Mauro® | Conexión con bases de datos | 4 | 12-04-2006 15:23:39 |
Obtener posicion del cursor sobre una imagen | joni | Varios | 3 | 01-04-2005 21:05:54 |
Como obtener la posicion actual de una tabla | mharo | Conexión con bases de datos | 2 | 16-07-2003 20:05:06 |
|