Para abrir un archivo en pdf o cualquier otro tipo de archivo (sea cual sea su extensión), simplemente añadimos el siguiente código en el formulario donde estemos trabajando:

Private Declare Function ShellExecute Lib «shell32.dll» Alias «ShellExecuteA» (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Y en el botón, menú, imagen…. donde queremos que se abra el archivo pdf ponemos lo siguiente:

ShellExecute Me.hwnd, «open», «c:\manual.pdf», «», «», 4

Siendo «c:\manual.pdf» la ruta de vuestro fichero en pdf u otro tipo de fichero que querramos abrir.

por Victor

Me llamo Víctor López y nací en Zaragoza el 16 de Diciembre de 1984. Esta web la monté exactamente el 23 de Mayo del 2005 con la idea de publicar mis experiencias personales, cosas curiosas que veía a mi alrededor (tanto en Internet como en mi vida) y el poder tener mi propio espacio web en la red. Si quieres puedes ver las estadísticas del año 2010. Ingeniero Superior en informática (terminé la carrera en 2006), desde pequeño ya estaba totalmente convencido a lo que me iba a dedicar en mi vida, la informática. Quizás porque mi padre tenía un Spectrum y me pegaba horas trasteándolo o quizás porque desde pequeño siempre me han gustado “los chismes”. El caso es que empezó a gustarme este mundo de la informática. Profesionalmente soy Analista-Programador Senior en PHP y me dedico al análisis, desarrollo y programación de páginas web y al desarrollo de aplicaciones (principalmente web en PHP, empecé a programar en el año 2002 en PHP), creación, alojamiento, optimización (diseño, SEO, publicidad), puesta en marcha de webs y potenciándolas. Actualmente soy Lead Integration Engineer en EnGrande.com – BudGetPlaces.com, además de formar parte de Homein.com (anteriormente he trabajado en Atrapalo.com, Camyna.com y Sync.es). Socio fundador de Coompy.es Alquilar habitación – Compartir piso. Partidario del software libre y usuario asiduo de Ubuntu y CentOS. Fui usuario de Mac pero ahora ya he vuelto al buen camino con Linux (Ubuntu distro). Sobre mi filosofía de vida, te invito a que leas este artículo: “Tu eres el resultado de ti mismo“. Si lo lees, entenderás mi punto de vista de la vida. Intento estar lo más lejos posible de la monotonía y considero mi trabajo como un hobby, me gusta aprender cosas nuevas cada día y afrontar nuevas metas y proyectos. En mi tiempo libre me gusta practicar cualquier deporte (el fútbol especialmente), me gusta competir (sea el ámbito que sea), los coches, las buenas películas/series y viajar. Personalmente considero que lo primero en esta vida es la salud y las personas, dejando atrás otras cosas, como puede ser el dinero, la fama y todas esas chorradas, que cuanto más las tienen las personas, más las quieren y menos les importan los demás. Y creo que el respeto y educación es fundamental. Pues eso es todo, un breve resumen de mi persona. Si te quieres anunciar en mi blog, contactar conmigo ya sea para la contratación de mis servicios, ofertas, agradecimientos, quejas, insultos, amenazas y/o similares, puedes mandarme un correo cuando quieras. Mi correo personal de contacto es: http://helektron.com/contacto-personal/ Puedes seguir este blog por Google Plus, Facebook, Twitter, RSS y por mail.

47 comentario en “Abrir cualquier tipo de archivo en VB”
  1. ‘MARINES’ MIL GRACIAS POR LA AYUDA!! FUNCIONO PERFECTAMENTE, LO UNICO QUE PODRIAMOS AUMENTAR A LA RESPUESTA ES QUE LOS ARCHIVOS QUE SE VAN A ABRIR PARA NO DARLE UNA RUTA COMPLETA SINO UNICAMENTE EL NOMBRE Y LA EXTENSION DEL ARCHIVO ES GRABARLOS EN EL BIN DEL PROYECTO QUEDANDO ASI:
    EJEMPLO
    Process.Start(«FORMULAS.pptx»)
    Y CON ESTO YA NOS ABRE CUALQUIE ARCHIVO.
    SALUDOS Y MUCHAS GRACIAS
    ESTO ES PARA VB.NET

  2. Con este método que se explica aquí no tendrás problema en abrir cualquier fichero local, por red o VPN

  3. Una consulta necesito que la dirección sea independiente del disco local, es decir…c:\window o d:\xxx……, deseo que sea algo así como lo hacen las paginas web donde es ….\nombre de una carpeta contenedora….¿como lo hago?

  4. Marines sos un genio, no podia encontrar una respuesta mas directa a mi problema de abrir un archivo, jajaja gracias, y saludos a todos los desarrolladores del foro.

  5. A mi me ha funcionado referenciandome en

    http://mvps.org/access/api/api0018.htm

    Pero en un botón de access de un formulario para lanzar el archivo pongo
    (Filtrando lo demás)

    Dim openf

    openf = apiShellExecute(hWndAccessApp, vbNullString, «c:\pepe.xls», vbNullString, vbNullString, 1)

    Y luego incluyo más arriba la función que sale en el mensaje de más abajo

  6. A mi tampoco me compila y he visto que en vez de ShellExecute algunos usan apiShellExecute…
    quedando entonces: (y esto a mi me ha compilado)

    Private Declare Function apiShellExecute Lib «shell32.dll» _
    Alias «ShellExecuteA» _
    (ByVal hwnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) _
    As Long

  7. Quiero decirles que de verdad que buena instruccion para realizar ese procedimiento , me fue muy útil, Gracias XD . ^_^

  8. Buenos dias, esot tratando de abrir un archivo pdf, desde VB, pero no se com o hacerlo ya que los archivos se encuentran en el servidor de la red.
    Fracias

  9. Que tal compañero, tengo el mismo problema que giovanny… Necesito abrir un html y probé con el código que das pero me manda un error de sintaxis.. Me estará faltando alguna referencia o algo asi?

    Agradeceré eternamente tu ayuda… y si pudieras avisarme a mi correo te lo agradeceria aun mas (cesaro_4815162342@hotmail.com)

  10. hola… el codigo que publicastes no me funciona para abrir un archivo con extencion html.. por favor si puedes publicar otra forma de abrir uno con extenciaon html.. gracias de antemano

  11. Necesitaría ocupar un código que abra cualquier tipo de archivo pero para el lenguaje C++. Tienen idea de como lograrlo, ya que he Googleado por todos lados y no logro encontrar lo que busco, ya que explica unicamente como abrir archivos de en C en si, o al menos eso entendí.
    Gracias…anticipadamente.

  12. Necesitaría ocupar un código que abra cualquier tipo de archivo pero para el lenguaje C++. Tienen idea de como lograrlo, ya que Googleado por todos lados y no logro encontrar lo que busco, ya que explica unicamente como abrir archivos de en C en si, o al menos eso entendí.
    Gracias…anticipadamente.

  13. Yo lo he probado en VB no en .NET, supongo que tendrás otras alternativas.
    Te recomiendo que visites esta web: ElGuille.info

    Saludos!!

  14. Hola victor:

    Oye una pregunta, nuevamente, este código:

    ShellExecute Me.hwnd, «open», «c:\manual.pdf», «», «», 4

    no funciona en vb.net, verdad?, porque me marca un error en el ‘Me.hwnd’, sabes por casualidad como le haría, disculpa mi ignorancia…

  15. Un handle es un número de identificación. HWnd es un handle para referirse a una ventana, hDC es un handle para referirse al contexto de dispositivo de un objeto ( Device Context ). Cuando una función de una DLL espera recibir como argumento un handle, se debe declarar como ByVal Integer.

  16. QUE ES ‘Me.hwnd’ CUANDO SE EJECUTA LA CADENA :
    ShellExecute Me.hwnd, «open», «c:\manual.pdf», «», «», 4

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *