Está en la página 1de 5

VS2010 trabajando con Ms Word

Por: Jos Jess Ambriz Meza


Introduccin
Algunos programadores han descubierto las ventajas de desarrollar sistemas de
informacin usando como base el producto Ms Office y programando en el lenguaje
Visual Basic para aplicaciones (en ingls Visual Basic for Applications y por sus
siglas VBA); pero tambin en el producto Ms Visual Basic Studio 2010 (por sus
siglas en ingls VS2010) se puede interactuar con archivos de Ms Word utilizando
las libreras adecuadas.
Este artculo mostrar la forma de abrir y guardar documentos de Ms Word usando
VS2010 y est dirigido a los desarrolladores que han programado o tienen idea de
la sintaxis para programar en VBA y que estn familiarizados con la sintaxis del
lenguaje Visual Basic (por sus siglas en ingls VB).
Aunque el objetivo es desarrollar una aplicacin en VS2010, el artculo muestra con
ejemplos pequeos cmo trabajar con archivos de Ms Word usando la sintaxis del
lenguaje VB; quienes han trabajado con Ms VB 6.0 pueden comprenderlo tambin.
Se da por supuesto que el lector sabe declarar variables e invocar procedimientos,
tambin que ha trabajado con la jerarqua de clases en VBA y que conoce los
conceptos bsicos de programacin orientada en objetos.
Jerarqua de objetos de Ms Word
En VS2010 se puede acceder a las clases y objetos que ha puesto disponibles el Ms
Word para manipular documentos. La jerarqua de clases se indica en las
referencias (1 y 2 ) el programador puede usarla al agregar los namespaces
Microsoft.Office.Core, Microsoft.Office.Interop.Word al proyecto. Hay que recordar
que un namespace es un grupo de clases. Por ejemplo: El namespace System es un
namespace encargado de guardar dentro de l muchas clases y tambin otros
namespaces.
Cuando se quiere indicar que namespace se agregar al proyecto, se deben indicar
todos los namespaces que lo contienen. Por ejemplo: System.Windows.Forms este
es el nombre completo del namespace Forms junto con los nombres de los
namespaces que lo contienen; Windows y este ltimo es contenido por System.
Abrir un archivo
Para abrir un archivo de MsWord se realizan los siguientes pasos:
1. Agregar la librera de Word en el proyecto actual en VS2010. Para ello hay que ir
al men Proyecto, en el apartado Agregar referencia. Ah se muestran 5
carpetas, de las cuales hay que escoger la llamada COM y escoger la librera
llamada Microsoft Office 14.0 Object Library (tambin puede ser la versin 12).
Ver figura 1.

2. El siguiente cdigo abre una ventana de Ms Word con su contenido actual para
ser manipulado por el usuario. Se indican con comentarios el objetivo de cada
sentencia en Ms VB .NET (indicado en color azul).

' genera un objeto de la clase Object


Dim WordApp As Object
' genera un objeto de la clase Word.Application
WordApp = CreateObject("Word.Application")
' Usa la clase OpenFileDialog para mostrar una ventana emergente tipo
' Ms Windows para que el usuario escoja un archivo y oprima un botn
' el cual acepta el archivo seleccionado o cancela la operacin.
' Si este botn es igual a OK, entonces realiza el bloque de cdigo
' dentro del IF
If Me.OpenFileDialog1.ShowDialog() = DialogResult.OK Then
' Genera un objeto para guardar ah el nombre del archivo.
Dim fileName As Object = OpenFileDialog1.FileName
' Genera un objeto para indicar posteriormente que no se podr
' escribir en el archivo
Dim soloLectura As Object = False
' Genera un objeto para indicar posteriormente que el archivo
' ser visible para el usuario.
Dim isVisible As Object = True
' Genera un objeto para indicar un parmetro que NO se proporcionar
Dim missing As Object = System.Reflection.Missing.Value

' Estar visible la aplicacin de Ms Word


WordApp.Visible = True
' Para abrir el archivo, se genera un objeto y despus se le asigna
' el archivo abierto por el mtodo Open de la coleccin Documents.
Dim aDoc As Object
' Los parmetros que utilizan el objeto missing son obligatorios
' por sintaxis pero tienen valores predeterminados que se estn
' aprovechando.
' aDoc guardar una referencia a un objeto de la clase Document
aDoc = WordApp.Documents.Open(fileName, missing, missing, missing,
missing, missing, missing, missing, missing, missing, isVisible)
' Coloca la ventana como activa
aDoc.Activate();
End If
En el anterior cdigo el objeto WordApp es una aplicacin de Ms Word que puede
tener varios documentos abiertos. A todos ellos los almacena en la coleccin es un
arreglo llamada Documents. Dicha coleccin tiene un mtodo Open para abrir
un documento, regresar una referencia al objeto de la clase Document que
gener y abre el documento usando el propio programa Ms Word. (El mtodo
Open obliga al Ms Word a ejecutarse mostrando el archivo indicado. Este ejemplo
puede usarse cuando dentro de una aplicacin se quiere abrir un archivo DOC, pero
para ser editado o impreso en Ms Word de forma independiente de la aplicacin.
Leer / escribir / buscar informacin sobre documentos
En el siguiente ejemplo se utiliza la clase RANGE, est clase sirve para definir una
parte del documento. Todo documento de Ms Word puede dividirse segn convenga
en pginas, prrafos, palabras y letras. El objeto de la clase RANGE definido se
usar para indicar la posicin a partir de la cual se buscar en el documento.
A continuacin se presenta un cdigo que inserta un texto en un documento. Las
sentencias que ya se han comentado en el cdigo anterior no se comentan en este.
' Cadena de texto, tendr la ruta y path de un archivo
Dim strFileName As String
Dim word As Object
word = CreateObject("Word.Application")
Dim doc As Object
' Inicio de seccin Try- Catch para manejar errores en VB.NET
Try
' Nombre del directorio y del archivo que se abrir, este debe de
' existir en la computadora para que pueda funcionar el ejemplo
strFileName = "C:\temp\prueba1.doc"

' El objeto de la clase Application, agrega un documento vlido en su


' coleccin de documentos; coloca una referencia de dicho documento
' en el objeto doc
doc = word.Documents.Add()
' Variable que indica un texto a insertar dentro del documento abierto
Dim insertText As String = "texto insertado."
' Declara un objeto de la clase Object que posteriormente
' se convertir a la clase Range.
Dim range As Object
' El mtodo Range genera un objeto de la clase del mismo nombre
' Coloca la referencia a dicho objeto de la clase Range en el
' objeto range. El rango inicia y termina en la posicin 0 del
' documento ( es decir, en el inicio ).
range = doc.Range(Start:=0, End:=0)
' Coloca el contenido de la variable insertText en el rango que
' se defini anteriormente.
range.Text = insertText
' Guarda el documento en la ruta y con el nombre especificado.
doc.SaveAs(strFileName)
' Si existi algn error ( por ejemplo, falta de permisos para
' escribir en la ruta indicada en la variable strFileName) entonces
' se ejecuta el cdigo siguiente. El error se indicar en el objeto
' ex de la clase Exception.
Catch ex As Exception
' Muestra una ventana emergente con el mensaje indicado por el error.
MessageBox.Show( ex.Message )
' La seccin Finally se ejecuta despus del cdigo dentro de la
' seccin try-catch se haya o NO cado en un error.
Finally
' Cerrar el documento de Ms Word
doc.Close(True)
' Fin de la seccin try-catch
End Try
Una seccin o bloque try-catch indica al compilador que las sentencias ubicadas
entre las palabras try y catch podran marcar un error, pero este error no se
puede predecir al 100%. Por ejemplo, se solicita al usuario de la aplicacin el
nombre de un archivo y coloca un nombre incorrecto, esto genera un error no se
encuentra el archivo indicado, pero si el usuario coloca bien el nombre el error no
se presentar.

A este tipo de errores VB .NET les denomina excepciones, es decir errores de


software; los cuales no deben de detener la ejecucin del programa, se deben
cachar y manejar de la forma correcta para corregirlos. La clase Exception
maneja estos errores dando una ligera descripcin del mismo (en la propiedad
Message).
Las sentencias siguientes:
Dim range As Object
range = doc.Range(Start:=0, End:=0)
Muestran a aplicacin de los conceptos:
Polimorfismo: El objeto es declarado de la clase Object la cual es la clase PADRE
de todas las clases en VB. Esto provoca que gracias a esta herencia el objeto
range pueda CAMBIAR / MUTAR a cualesquier otra clase que sea HIJA de la clase
Object. La clase Range es hija de Object por lo tanto en la segunda sentencia
se convierte el objeto range de la clase Object a la clase Range.
Patrn de diseo de construccin de objetos: Para generar un objeto de
cualesquier clase comnmente se utiliza el operador new. Por ejemplo: Dim obj1
as new Application ; hay algn casos en que no se desea que el programador pueda
generar objetos de una clase determinada; as que es algn mtodo de otra clase el
cual DEVUELVE un objeto de la clase deseada. En las dos sentencias anteriores el
mtodo Range genera un objeto de la clase Range, es decir, no se quera
realizar la sentencia: Dim range as new Range.

También podría gustarte