SOLUCIONADO!!!!
Pues bien, como casi siempre, no hay más que buscar en serio para encontrar.
Este error no tiene nada que ver con las suposiciones iniciales (error de configuración, PC...), sino que era problema de las instancias que utiliza vb para poder generar el documento Word.
Es decir, cuando abres el word, declaras una aplicación de word, el word.application (en nuestro caso anterior, era el appWord), pero internamente, también se genera otra instancia de dicha aplicación. Por ello,
es necesario que todas las referencias que hagamos en nuestro programa estén dirigidas a nuestra word.Application (appWord), ya que sino, intenta hacer lo que manda la instrucción correspondiente a la instancia que genera internamente.
Esta instancia, se utiliza para minimizar errores, ya que también se genera cuando se abre directamente el word, pero claro, a la hora de programar no nos sirve de ayuda, ya que lo que nos hace, realmente, es esconder la solución de dicho error.
Este error solo se genera con ciertas instrucciones del propio Word que tienen llamadas a las secciones definidas en el word, como es el caso de las secciones, marcadores y tablas (es en lo único que he podido comprobar hasta el momento).
La solución es sencilla de aplicar, pero muy difícil de localizar dónde se debe aplicar. Por ello, voy a poner un código que da error y después la solución del mismo.
Por ejemplo, vamos a poner el código para crear una tabla en word
(Recordemos que appWord es el Word.Application)
Cita: appWord.ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=NRows, NumColumns:=NCols
With appWord.Selection.Tables(appWord.Selection.Tables. Count)
.Rows.AllowBreakAcrossPages = False
If .Style <> "Tabla con cuadrícula" Then
.Style = "Tabla con cuadrícula"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True
.Columns(1).Width = 230 'GREMIO
.Columns(2).Width = 75 'VALOR A NUEVO
.Columns(3).Width = 50 'DEMERITO
.Columns(4).Width = 75 'DAÑo
End With
Este código es el que nos generaba error desde la segunda ejecución y en adelante. La diferencia es simple, ya que hay una parte que se referencia a appword que no la incluimos, por lo que nos da error.
La solución está marcado en negrita a continuación
Cita: appWord.ActiveDocument.Tables.Add Range:=appWord.Selection.Range, NumRows:=NRows, NumColumns:=NCols
appWord.Selection.Tables(appWord.Selection.Tables. Count).Rows.AllowBreakAcrossPages = False
If appWord.Selection.Tables(appWord.Selection.Tables. Count).Style <> "Tabla con cuadrícula" Then
appWord.Selection.Tables(appWord.Selection.Tables. Count).Style = "Tabla con cuadrícula"
End If
appWord.Selection.Tables(appWord.Selection.Tables. Count).ApplyStyleHeadingRows = True
appWord.Selection.Tables(appWord.Selection.Tables. Count).ApplyStyleLastRow = True
appWord.Selection.Tables(appWord.Selection.Tables. Count).ApplyStyleFirstColumn = True
appWord.Selection.Tables(appWord.Selection.Tables. Count).ApplyStyleLastColumn = True
appWord.Selection.Tables(appWord.Selection.Tables. Count).Columns(1).Width = 230 'GREMIO
appWord.Selection.Tables(appWord.Selection.Tables. Count).Columns(2).Width = 75 'VALOR A NUEVO
appWord.Selection.Tables(appWord.Selection.Tables. Count).Columns(3).Width = 50 'DEMERITO
appWord.Selection.Tables(appWord.Selection.Tables. Count).Columns(4).Width = 75 'DAÑo
En resumen:
Para que funcione correctamente todas las llamadas a la aplicación word deben incluir explícitamente la isntancia de la aplicación word (appWord) que hemos generado.
Además, siguiendo el consejo de una web que os incluyo al final de este post, aparece una sugerencia por la cual se pide que no se utilice el comando with, ya que puede perder la referencia a nuestro appWord más fácilmente.
Para finalizar:
Las webs donde he econtrado todo esto han sido las siguientes (por si quereis obtener más información)...
http://www.devx.com/vb2themax/Article/19834 http://support.microsoft.com/default...b;en-us;189618 http://www.programmersheaven.com/c/M...ing=A9999F0001
Un saludo a todos, y si teneis alguna duda sobre esta explciación... ya sabeis, escribir después para discutir sobre ello.
Sin más, gurgur