Buen dia Dany, gracias por responder, pero es necesario tener marcadroes para manejar la creacion de tablas en Word, desde PB.?
Me imagino que asi como hay una instruccion "ole_object.ActiveDocument.Tables.Add(ole_object.Selection.Range,ll_num_filas,ll_num_columnas)"; existira una para definir que la tabla o el apuntador ya no esta dentro de la tabla si no que sigue en el documento pero por fuera de la tabla. Y lo otro como creo un documento en Word desde pb sin tenerlo creado previamente?
Mira este es el codigo que utilizo... en el llamo un archvio previamente creado, le asigno tipo de letra, tamaño, y selecciono un marcador; luego creo una tabla y vacio la nformacion del un DW, luego seleccion otro marcador y alli si puedo crear otra tabla, si no hago esto entonces la ultima tabal creada me queda dentro de la primera; por ultimo lo desconecto y lo destryo.
string ls_archivo='C:plantilla.doc'
OLEObject ole_object
ole_object = CREATE OLEObject
ls_connect = "word.application.8"
If ole_object.ConnectToNewObject(ls_connect) = 0 Then
//Abro el archivo
ole_object.Documents.open(ls_archivo)
ole_object.Visible=False
ole_object.Selection.Font.Name = "Arial"
ole_object.Selection.Font.Size = 10
String ls_cadena
Long ll_fila, ll_columna
long ll_num_filas, ll_num_columnas
//Selecciono Marcador a
ole_object.ActiveDocument.Bookmarks.item("a").Select
ole_object.Selection.Font.Name = "Arial"
ole_object.Selection.Font.Size = 10
// Definir el número de filas y columnas
ll_num_filas = dw_crdndor.RowCount()
ll_num_columnas = 5
If ll_num_filas > 0 Then
// Crear la tabla
ole_object.ActiveDocument.Tables.Add (ole_object.Selection.Range,ll_num_filas,ll_num_columnas)
For ll_fila = 1 To ll_num_filas
For ll_columna = 1 to ll_num_columnas
Choose Case ll_columna
Case 1
ls_cadena = dw_crdndor.GetItemString(ll_fila,"nmbre_crdndor")
Case 2
ls_cadena = dw_crdndor.GetItemString(ll_fila,"aplldo_crdndor")
Case 3
ls_cadena = dw_crdndor.GetItemString(ll_fila,"drccion_crdndor")
Case 4
ls_cadena = dw_crdndor.GetItemString(ll_fila,"tlfno_crdndor")
Case 5
ls_cadena = dw_crdndor.GetItemString(ll_fila,"email_crdndor")
End Choose
ole_object.Selection.typetext(ls_cadena)
If ll_columna <= ll_num_columnas Then
If ll_fila <= ll_num_filas then
If ll_columna = ll_num_columnas and ll_fila = ll_num_filas then
else
ole_object.Selection.MoveRight(12)
end if
end if
End If
End For
End For
End If
//Selecciono Marcador b
ole_object.ActiveDocument.Bookmarks.item("b").Select
ole_object.Selection.Font.Name = "Arial"
ole_object.Selection.Font.Size = 10
ls_cadena = "~n"
ole_object.Selection.typetext(ls_cadena)
// Definir el número de filas y columnas
ll_num_filas = dw_intgrnte.RowCount()
ll_num_columnas = 5
If ll_num_filas > 0 Then
// Crear la tabla
ole_object.ActiveDocument.Tables.Add(ole_object.Selection.Range,ll_num_filas,ll_num_columnas)
For ll_fila = 1 To ll_num_filas
For ll_columna = 1 to ll_num_columnas
ole_object.Selection.Font.bold = FALSE
Choose Case ll_columna
Case 1
ls_cadena = dw_intgrnte.GetItemString(ll_fila,"nmbre_intgrnte")
Case 2
ls_cadena = dw_intgrnte.GetItemString(ll_fila,"aplldo_intgrnte")
Case 3
ls_cadena = dw_intgrnte.GetItemString(ll_fila,"drccion_intgrnte")
Case 4
ls_cadena = dw_intgrnte.GetItemString(ll_fila,"tlfno_intgrnte")
Case 5
ls_cadena = dw_intgrnte.GetItemString(ll_fila,"email_intgrnte")
End Choose
ole_object.Selection.typetext(ls_cadena)
If ll_columna <= ll_num_columnas Then
If ll_fila <= ll_num_filas then
If ll_columna = ll_num_columnas and ll_fila = ll_num_filas then
else
ole_object.Selection.MoveRight(12)
end if
end if
End If
End For
End For
End If
// ole_object.quit(0) para grabar
ole_object.DisconnectObject()
DESTROY ole_object