Crear tabla desde VB en Word

monchito
06 de Febrero del 2004
Os comento:
Yo en VB visualizo una serie de datos en campos texto y además tengo un MsFlexGrid con filas variables y con 2 columnas. También tengo un documento Word con un formato concreto, con sus textos, etc y tengo marcadores para luego poder visualizar los datos de mi formulario. El MSFlexGrid quiero visualizarlo en el documento más o menos sobre la mitad de dicho documento y quiero visualizar una tabla con 2 columnas y n filas dependiendo de las filas del MSFlexGrid.
El tema es que los campos texto los visualizo perfectamente, también creo la tabla en Word de 2 columnas por n filas. Todo esto correcto. Pero lo que no logro hacer es crear la tabla en Word DONDE YO QUIERA, siempre me la crea al principio del documento y otro problema es que no logro poner los datos de la segunda columna del MSFlexGrid, que son datos numéricos, en la segunda columna de la tabla que he creado en word.
Por favor, estoy desesperado, ¿alguien me puede ayudar?.
Os mando más o menos el código que tengo hecho. Es un poco largo.
***************************************************************************
' Genero las variables (OK)
Dim fila, columnas, I, total As Integer
Dim datos, nom As Recordset

' Abrimos el documento Word (OK)
Dim appword As Word.Application
Dim doc1 As Word.Document
Set appword = New Word.Application
Set doc1 = appword.Documents.Open("d:tempprogramaprueba.doc")
' Visualizo unos campos (OK)
doc1.Range.Find.Execute findtext:="xcodigox", replacewith:="" & T_codigo.Text
doc1.Range.Find.Execute findtext:="xtitulox", replacewith:="" & "MINUTA"
doc1.Range.Find.Execute findtext:="xtitulo1x", replacewith:="" & "MINUTA"
doc1.Range.Find.Execute findtext:="xivax", replacewith:="" & T_iva.Text
doc1.Range.Find.Execute findtext:="xdnix", replacewith:="" & T_dni.Text
' Saco los datos del cliente (OK)
Set nom = base.OpenRecordset("select * from clientes where dni = '" & T_dni.Text & "'")
If nom.RecordCount <> 0 Then
nom.MoveLast
nom.MoveFirst
End If
' Visualizo datos del cliente (OK)
doc1.Range.Find.Execute findtext:="xnombrex", replacewith:="" & nom.Fields("nombre") _
& " " & nom.Fields("apellido1") & " " & nom.Fields("apellido2")
total = 0
I = 0
fila = R_derechos.Row

'Creo la tabla en Word con 2 columnas y n filas --> LA TABLA LA CREA BIEN PERO SIEMPRE AL PRINCIPIO DEL DOCUMENTO
doc1.Tables.Add Range:=Selection.Range, NumRows:=fila + 1, NumColumns:=2, _
DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitContent
ActiveWindow.ActivePane.SmallScroll Down:=8

' Me recorro el MSFlexGrid para visualizar las celdas en la tabla de Word (NOK)
While I <= fila
R_derechos.Row = I
R_derechos.Col = 0
' Visualizo en la primera celda la primera celda del MSFlexGrid
Selection.TypeText Text:=R_derechos.Text
'Intento irme a la siguiente columna dentro de la misma fila de la tabla creada en WORD --> ESTO NO ME FUNCIONA
Selection.MoveRight Unit:=wdLine, Count:=1
R_derechos.Col = 1
total = total + R_derechos.Text
Selection.TypeText Text:=R_derechos.Text
I = I + 1
If I <= fila Then
R_derechos.Row = I
' Una vez "" visualizada la primera fila me voy una fila abajo y a la izquierda para visu. la siguiente fila --> ESTO NO FUNCIONA
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveLeft Unit:=wdLine, Count:=1
End If
Wend
' Visualizo los siguientes campos
doc1.Range.Find.Execute findtext:="xderechosx", replacewith:="" & total
doc1.Range.Find.Execute findtext:="xfechax", replacewith:="" & T_fecha.Text
doc1.Range.Find.Execute findtext:="xtotalx", replacewith:="" & T_importetotal.Text

appword.Visible = True
appword.WindowState = wdWindowStateMaximize
Set doc1 = Nothing
Set appword = Nothing
Set datos = Nothing
Dim fila, columnas, I, total As Integer
Dim datos, nom As Recordset