Abrir Un Doc Desde Vb2008

Embed Size (px)

Citation preview

  • 8/18/2019 Abrir Un Doc Desde Vb2008

    1/5

    VS2010 trabajando con Ms Word

    Por: José Jesús Ambriz Meza

    Introducción

    Algunos programadores han descubierto las ventajas de desarrollar sistemas deinformación usando como base el producto Ms Office y programando en el lenguajeVisual Basic para aplicaciones (en inglés Visual Basic for Applications y por sussiglas VBA) pero también en el producto Ms Visual Basic !tudio "#$# (por sussiglas en inglés V!"#$#) se puede interactuar con archivos de Ms %ord utili&andolas librer'as adecuadas

    ste art'culo mostrar* la forma de abrir y guardar documentos de Ms %ord usandoV!"#$# y est* dirigido a los desarrolladores +ue han programado o tienen idea de

    la sinta,is para programar en VBA y +ue est*n familiari&ados con la sinta,is dellenguaje Visual Basic (por sus siglas en inglés VB)

    Aun+ue el objetivo es desarrollar una aplicación en V!"#$#- el art'culo muestra conejemplos pe+ue.os cómo trabajar con archivos de Ms %ord usando la sinta,is dellenguaje VB +uienes han trabajado con Ms VB / # pueden comprenderlo también!e da por supuesto +ue el lector sabe declarar variables e invocar procedimientos-también +ue ha trabajado con la jerar+u'a de clases en VBA y +ue conoce losconceptos b*sicos de programación orientada en objetos

    Jerar u!a de objetos de Ms Word

    n V!"#$# se puede acceder a las clases y objetos +ue ha puesto disponibles el Ms%ord para manipular documentos 0a jerar+u'a de clases se indica en lasreferencias ($ y " ) el programador puede usarla al agregar los namespacesMicrosoft Office 1ore- Microsoft Office 2nterop %ord al proyecto 3ay +ue recordar+ue un namespace es un grupo de clases 4or ejemplo5 l namespace !ystem es unnamespace encargado de guardar dentro de él muchas clases y también otrosnamespaces

    1uando se +uiere indicar +ue namespace se agregar* al proyecto- se deben indicartodos los namespaces +ue lo contienen 4or ejemplo5 !ystem %indo6s 7orms estees el nombre completo del namespace 7orms junto con los nombres de losnamespaces +ue lo contienen %indo6s y este 8ltimo es contenido por !ystem

    Abrir un arc"i#o

    4ara abrir un archivo de Ms%ord se reali&an los siguientes pasos5

    $ Agregar la librer'a de %ord en el proyecto actual en V!"#$# 4ara ello hay +ue iral men8 94royecto:- en el apartado 9Agregar referencia: Ah' se muestran ;carpetas- de las cuales hay +ue escoger la llamada 91OM: y escoger la librer'allamada 9Microsoft Office $< # Object 0ibrary: (también puede ser la versión $")Ver figura $

  • 8/18/2019 Abrir Un Doc Desde Vb2008

    2/5

    " l siguiente código abre una ventana de Ms %ord con su contenido actual paraser manipulado por el usuario !e indican con comentarios el objetivo de cadasentencia en Ms VB = > (indicado en color a&ul)

    ? genera un objeto de la clase Object@im %ordApp As Object

    ? genera un objeto de la clase %ord Application%ordApp 1reateObject( %ord Application )

    ? Csa la clase Open7ile@ialog para mostrar una ventana emergente tipo? Ms %indo6s para +ue el usuario escoja un archivo y oprima un botón? el cual acepta el archivo seleccionado o cancela la operación? !i este botón es igual a 9OD:- entonces reali&a el blo+ue de código? dentro del 272f Me Open7ile@ialog$ !ho6@ialog() @ialogEesult OD >hen

    ? Fenera un objeto para guardar ah' el nombre del archivo @im file=ame As Object Open7ile@ialog$ 7ile=ame

    ? Fenera un objeto para indicar posteriormente +ue no se podr* ? escribir en el archivo @im solo0ectura As Object 7alse

    ? Fenera un objeto para indicar posteriormente +ue el archivo ? ser* visible para el usuario @im isVisible As Object >rue

    ? Fenera un objeto para indicar un par*metro +ue =O se proporcionar* @im missing As Object !ystem Eeflection Missing Value

  • 8/18/2019 Abrir Un Doc Desde Vb2008

    3/5

    ? star* visible la aplicación de Ms %ord %ordApp Visible >rue

    ? 4ara abrir el archivo- se genera un objeto y después se le asigna ? el archivo abierto por el método Open de la colección @ocuments

    @im a@oc As Object

    ? 0os par*metros +ue utili&an el objeto missing son obligatorios? por sinta,is pero tienen valores predeterminados +ue se est*n

    ? aprovechando ? a@oc guardar* una referencia a un objeto de la clase @ocument a@oc %ordApp @ocuments Open(file=ame- missing- missing- missing-missing- missing- missing- missing- missing- missing- isVisible)

    ? 1oloca la ventana como activa a@oc Activate()

    nd 2f

    n el anterior código el objeto 9%ordApp: es una aplicación de Ms %ord +ue puedetener varios documentos abiertos A todos ellos los almacena en la colección Ges unarregloG llamada 9@ocuments: @icha colección tiene un método 9Open: para abrirun documento- regresar una referencia al objeto de la clase 9@ocument: +uegeneró y abre el documento usando el propio programa Ms %ord ( l método

    9Open: obliga al Ms %ord a ejecutarse mostrando el archivo indicado ste ejemplopuede usarse cuando dentro de una aplicación se +uiere abrir un archivo @O1- peropara ser editado o impreso en Ms %ord de forma independiente de la aplicación

    $eer % escribir % buscar in&ormación sobre documentos

    n el siguiente ejemplo se utili&a la clase EA=F - est* clase sirve para definir unaparte del documento >odo documento de Ms %ord puede dividirse seg8n convengaen p*ginas- p*rrafos- palabras y letras l objeto de la clase EA=F definido seusar* para indicar la posición a partir de la cual se buscar* en el documento

    A continuación se presenta un código +ue inserta un te,to en un documento 0assentencias +ue ya se han comentado en el código anterior no se comentan en este

    ? 1adena de te,to- tendr* la ruta y path de un archivo@im str7ile=ame As !tring

    @im 6ord As Object6ord 1reateObject( %ord Application )@im doc As Object

    ? 2nicio de sección >ryH 1atch para manejar errores en VB = >>ry

    ? =ombre del directorio y del archivo +ue se abrir*- este debe de ? e,istir en la computadora para +ue pueda funcionar el ejemplo str7ile=ame 15ItempIprueba$ doc

  • 8/18/2019 Abrir Un Doc Desde Vb2008

    4/5

    ? l objeto de la clase Application- agrega un documento v*lido en su ? colección de documentos coloca una referencia de dicho documento ? en el objeto 9doc: doc 6ord @ocuments Add()

    ? Variable +ue indica un te,to a insertar dentro del documento abierto @im insert>e,t As !tring te,to insertado

    ? @eclara un objeto de la clase Object +ue posteriormente? se convertir* a la clase Eange

    @im range As Object

    ? l método Eange genera un objeto de la clase del mismo nombre ? 1oloca la referencia a dicho objeto de la clase Eange en el ? objeto 9range: l 9rango: inicia y termina en la posición # del ? documento ( es decir- en el inicio ) range doc Eange(!tart5 #- nd5 #)

    ? 1oloca el contenido de la variable 9insert>e,t: en el rango +ue ? se definió anteriormente range >e,t insert>e,t

    ? Fuarda el documento en la ruta y con el nombre especificado doc !aveAs(str7ile=ame)

    ? !i e,istió alg8n error ( por ejemplo- falta de permisos para? escribir en la ruta indicada en la variable 9str7ile=ame:) entonces? se ejecuta el código siguiente l error se indicar* en el objeto? 9e,: de la clase ,ception1atch e, As ,ception

    ? Muestra una ventana emergente con el mensaje indicado por el error MessageBo, !ho6( e, Message )

    ? 0a sección 97inally: se ejecuta después del código dentro de la? sección 9tryHcatch: se haya o =O ca'do en un error7inally

    ? 1errar el documento de Ms %ord doc 1lose(>rue)

    ? 7in de la sección 9tryHcatch: nd >ry

    Cna sección o blo+ue 9tryHcatch: indica al compilador +ue las sentencias ubicadasentre las palabras 9try: y 9catch: podr'an marcar un error- pero este error no sepuede predecir al $##J 4or ejemplo- se solicita al usuario de la aplicación elnombre de un archivo y coloca un nombre incorrecto- esto genera un error 9no seencuentra el archivo indicado:- pero si el usuario coloca bien el nombre el error nose presentar*

  • 8/18/2019 Abrir Un Doc Desde Vb2008

    5/5

    A este tipo de errores VB = > les denomina 9e,cepciones:- es decir errores desoft6are los cuales no deben de detener la ejecución del programa- se deben

    9cachar: y manejar de la forma correcta para corregirlos 0a clase 9 ,ception:maneja estos errores dando una ligera descripción del mismo (en la propiedad

    9Message:)

    0as sentencias siguientes5@im range As Objectrange doc Eange(!tart5 #- nd5 #)

    Muestran a aplicación de los conceptos5K 4olimorfismo5 l objeto es declarado de la clase 9Object: la cual es la clase 4A@Ede todas las clases en VB sto provoca +ue gracias a esta herencia el objeto

    9range: pueda 1AMB2AE L MC>AE a cuales+uier otra clase +ue sea 32 A de la clase 9Object: 0a clase 9Eange: es hija de 9Object: por lo tanto en la segunda sentenciase convierte el objeto 9range: de la clase 9Object: a la clase 9Eange:K 4atrón de dise.o de construcción de objetos5 4ara generar un objeto decuales+uier clase com8nmente se utili&a el operador 9ne6: 4or ejemplo5 @im obj$as ne6 Application hay alg8n casos en +ue no se desea +ue el programador puedagenerar objetos de una clase determinada as' +ue es alg8n método de otra clase elcual @ VC 0V un objeto de la clase deseada n las dos sentencias anteriores elmétodo 9Eange: genera un objeto de la clase 9Eange:- es decir- no se +uer'areali&ar la sentencia5 @im range as ne6 Eange