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:
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”
Funciono muy bien tu codigo, gracias. Al menos lo probe con documentos en word.
Gracias
Hola a todos los del foro . . .
Quiciera que me ayudaran lo que pasa esque ya probe casi todos los codigos y aun no puedo abrir un archivo .mp3. se los agradecere bastante
Y perdon por la ignorancia
¿Que versión de VB estás usando?
pon tu código y así será más fácil, danos un poco más de info
No me funciona para abrir un documento de autocad lo necesito urgente por que es para un proyecto de la escuela de calificacion final
con respecto al codigo inicialmente propuesto:
ShellExecute Me.hwnd, «open», «c:\manual.pdf», «», «», 4
si usaron copiar y pegar a su proyecto, aparentemente el error es el de los sigos de comillas que se pegan como signos raros que no reconoce Vb. simplemente reescribi las comillas y compiló el código. gracias.
Genial, solo con poner en un botón:
Process.Start(«c:\manual.pdf»)
se abre, muchas graciassssssssss
Gracias Marines, funcionó perfectamente en VB.NET.
Probe tu codigo en vb6 para abir un archivo hnd pero no hace nada y tampoco un error, este codigo sirve para abrir este tipo de archivo o solo pdf
Con lo fácil que es en access 2003. Herramientas->Inicio->seleccionar el formulario que quieres.
En vez de mejorar las cosas las complican más.
si llego a saber antes que el access 2003 tiene el «modo ejecución» la hubiero hecho allí. No sabes lo complicado que es en Office XP conseguir que se abra sólo el formulario y no «Access»… tuve que usar unas librerías de manejo de ventanas para poder ocultar la ventana madre de Access y a la vez abrir un formulario que salga centrado en la pantalla (y fuera de la pantalla madre de access… maravillas! hay que hacer para conseguirlo, sólo digo que acabé haciendo animaciones de efecto persiana con las ventanas al sacar o cerrar un formulario, dentro de un bucle for cambiando el tamaño de la ventana en cada bucle… que bien me lo pasé al final! jajaja pero no deja de ser «cutre» en Office XP…
La abro en un access 2007 y se quedan las 2 abiertas.
Se quedan las 2 abiertas (me interesa que se queda la principal abierta por si quiere sacar otro registro).
Yo lo he programado en access 2003. De todas formas, no sé si influirá, pero la BD se abre en «modo ejecución». Vamos que se abre un formulario, no se abre el contenido de la BD.
o.O Enhorabuena!
Una pregunta: Al abrir la nueva BD ¿qué pasa con la anterior? según recuerdo con Access (Office XP) es imposible abrir 2 ficheros .mdb a la vez… Si abro uno se cierra el otro, por tnato cómo es posible que sobreviva la anterior BD?
Ya lo conseguí:
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = «Informe» ‘Nombre del informe que se quiere abrir.
stLinkCriteria = «[Registro]=» & Me![Registro] ‘cláusula WHERE
Dim strDbName As String
Dim objAccess As Access.Application
strDbName = (CurrentProject.Path & «\» & bd) ‘BD que se quiere abrir
Set objAccess = CreateObject(«Access.Application»)
With objAccess
.OpenCurrentDatabase FilePath:=strDbName
.DoCmd.OpenReport stDocName, acViewPreview, , stLinkCriteria
End With
objAccess.Application.Visible = True
Set objAccess = Nothing
Generalmente se tiene una base de datos para todo. No se suele ver 2 bases de datos interactuando de esa manera. Aunque ignoro si es posible. Lo que «suele» hacerse es acceder a las TABLAS de cualquier BD. Por ejemplo si guardas las tablas de todo en un fichero Tablas.mdb y la ubicas en c:\Tablas.mdb en el ordenador 1. Entonces puedes acceder a ese fichero que contiene las tablas desde Cualquier base de datos sea BD1, BD2 o una BD de otro ordenador en red, VPN, lo que sea.
Si creas un formulario en Access y le dices que las tablas están en \\ordenadorservidor\basedatos\Tablas.mdb Access ya se pispa y mete un protocolo para poder pedir información a las Tablas de tal manera que no se tenga que bajar el fichero entero para poder operar con ella. DE hecho está preparado para que muchos usuarios desde ordenadores distintos accedan al fichero de tablas en el servidor, y así puedan operar en tiempo real todos a la vez. Gestionando las colisiones con un protocolo suyo que no hace falta tocar.
Por ello si quieres abrir un informe en BD2, copias el informe de BD1 a BD2, Y así ya tiene el informe. Al abrir el informe desde BD1 o BD2 ambos iran a buscar el registro al fichero de tablas Tablas.mdb
Pero de lo que comentas de abrir un informe de BD1 desde BD2 no me suena haber visto nada de eso, pero igual se podría hacer un apaño, no lo se.Pero puedes hacerte las tablas en un fichero1.mdb y los formularios e informes en otra fichero2.mdb y le metes las tablas del fichero1.mdb … googleando tendrás info de esto sin problema.
Espero te sirva
Estoy trabajando en access y para abrir un registro concreto en un informe hago esto:
Dim stDocName As String
Dim stLinkCriteria As String
Lo que quiero es que desde otra BD externa abra ese registro en ese informe y de esa BD. Ej:
1ª BD: BD1, Informe1, Registro 1
2ªBD: BD2
Quiero que desde un botón del BD2 habra la BD1, el informe1 y el registro 1.
¿Se puede?
Gracias.
Hola a todos
soy nueva por aqui
pero me ayudaron mucho, pues estoy diseñando un msn en vb.net
Gracias
Quisiera saber como hacer para tener mi correo de gmail, porque siempre al abrir correo de hotmail me llega mucho spam y quiero cambiar. También me dijieron que puedo configurar outlook express con gmail, ¿eso es posible?
Hola gracias a todos por sus comentarios la verdad me fue de gran ayuda.
Yo estoy haciendo lo mismo pero yo en este caso lo estoy haciendo para sitios Web, y si cambia un poco. Les dejo la estructura si lo llegan a ocupar, a mi me funciono a la perfección.
Saludos y gracias.
Partial Class _Default
Inherits System.Web.UI.Page
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
Protected Sub btnBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
Dim Process As New Diagnostics.Process
Diagnostics.Process.Start(«c:\\nombre del cocumento»)
Funciono muy bien tu codigo, gracias. Al menos lo probe con documentos en word.
Gracias
Hola a todos los del foro . . .
Quiciera que me ayudaran lo que pasa esque ya probe casi todos los codigos y aun no puedo abrir un archivo .mp3. se los agradecere bastante
Y perdon por la ignorancia
¿Que versión de VB estás usando?
pon tu código y así será más fácil, danos un poco más de info
No me funciona para abrir un documento de autocad lo necesito urgente por que es para un proyecto de la escuela de calificacion final
con respecto al codigo inicialmente propuesto:
ShellExecute Me.hwnd, «open», «c:\manual.pdf», «», «», 4
si usaron copiar y pegar a su proyecto, aparentemente el error es el de los sigos de comillas que se pegan como signos raros que no reconoce Vb. simplemente reescribi las comillas y compiló el código. gracias.
Genial, solo con poner en un botón:
Process.Start(«c:\manual.pdf»)
se abre, muchas graciassssssssss
Gracias Marines, funcionó perfectamente en VB.NET.
Probe tu codigo en vb6 para abir un archivo hnd pero no hace nada y tampoco un error, este codigo sirve para abrir este tipo de archivo o solo pdf
Con lo fácil que es en access 2003. Herramientas->Inicio->seleccionar el formulario que quieres.
En vez de mejorar las cosas las complican más.
si llego a saber antes que el access 2003 tiene el «modo ejecución» la hubiero hecho allí. No sabes lo complicado que es en Office XP conseguir que se abra sólo el formulario y no «Access»… tuve que usar unas librerías de manejo de ventanas para poder ocultar la ventana madre de Access y a la vez abrir un formulario que salga centrado en la pantalla (y fuera de la pantalla madre de access… maravillas! hay que hacer para conseguirlo, sólo digo que acabé haciendo animaciones de efecto persiana con las ventanas al sacar o cerrar un formulario, dentro de un bucle for cambiando el tamaño de la ventana en cada bucle… que bien me lo pasé al final! jajaja pero no deja de ser «cutre» en Office XP…
La abro en un access 2007 y se quedan las 2 abiertas.
Se quedan las 2 abiertas (me interesa que se queda la principal abierta por si quiere sacar otro registro).
Yo lo he programado en access 2003. De todas formas, no sé si influirá, pero la BD se abre en «modo ejecución». Vamos que se abre un formulario, no se abre el contenido de la BD.
o.O Enhorabuena!
Una pregunta: Al abrir la nueva BD ¿qué pasa con la anterior? según recuerdo con Access (Office XP) es imposible abrir 2 ficheros .mdb a la vez… Si abro uno se cierra el otro, por tnato cómo es posible que sobreviva la anterior BD?
Ya lo conseguí:
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = «Informe» ‘Nombre del informe que se quiere abrir.
stLinkCriteria = «[Registro]=» & Me![Registro] ‘cláusula WHERE
Dim strDbName As String
Dim objAccess As Access.Application
strDbName = (CurrentProject.Path & «\» & bd) ‘BD que se quiere abrir
Set objAccess = CreateObject(«Access.Application»)
With objAccess
.OpenCurrentDatabase FilePath:=strDbName
.DoCmd.OpenReport stDocName, acViewPreview, , stLinkCriteria
End With
objAccess.Application.Visible = True
Set objAccess = Nothing
Generalmente se tiene una base de datos para todo. No se suele ver 2 bases de datos interactuando de esa manera. Aunque ignoro si es posible. Lo que «suele» hacerse es acceder a las TABLAS de cualquier BD. Por ejemplo si guardas las tablas de todo en un fichero Tablas.mdb y la ubicas en c:\Tablas.mdb en el ordenador 1. Entonces puedes acceder a ese fichero que contiene las tablas desde Cualquier base de datos sea BD1, BD2 o una BD de otro ordenador en red, VPN, lo que sea.
Si creas un formulario en Access y le dices que las tablas están en \\ordenadorservidor\basedatos\Tablas.mdb Access ya se pispa y mete un protocolo para poder pedir información a las Tablas de tal manera que no se tenga que bajar el fichero entero para poder operar con ella. DE hecho está preparado para que muchos usuarios desde ordenadores distintos accedan al fichero de tablas en el servidor, y así puedan operar en tiempo real todos a la vez. Gestionando las colisiones con un protocolo suyo que no hace falta tocar.
Por ello si quieres abrir un informe en BD2, copias el informe de BD1 a BD2, Y así ya tiene el informe. Al abrir el informe desde BD1 o BD2 ambos iran a buscar el registro al fichero de tablas Tablas.mdb
Pero de lo que comentas de abrir un informe de BD1 desde BD2 no me suena haber visto nada de eso, pero igual se podría hacer un apaño, no lo se.Pero puedes hacerte las tablas en un fichero1.mdb y los formularios e informes en otra fichero2.mdb y le metes las tablas del fichero1.mdb … googleando tendrás info de esto sin problema.
Espero te sirva
Estoy trabajando en access y para abrir un registro concreto en un informe hago esto:
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = «Informe»
stLinkCriteria = «[Registro]=» & Me![Registro]
DoCmd.OpenReport stDocName, acViewPreview, , stLinkCriteria
Lo que quiero es que desde otra BD externa abra ese registro en ese informe y de esa BD. Ej:
1ª BD: BD1, Informe1, Registro 1
2ªBD: BD2
Quiero que desde un botón del BD2 habra la BD1, el informe1 y el registro 1.
¿Se puede?
Gracias.
Hola a todos
soy nueva por aqui
pero me ayudaron mucho, pues estoy diseñando un msn en vb.net
Gracias
Quisiera saber como hacer para tener mi correo de gmail, porque siempre al abrir correo de hotmail me llega mucho spam y quiero cambiar. También me dijieron que puedo configurar outlook express con gmail, ¿eso es posible?
Gracias,
Sabrina
graciassssssssssssssssssssssssss!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Hola gracias a todos por sus comentarios la verdad me fue de gran ayuda.
Yo estoy haciendo lo mismo pero yo en este caso lo estoy haciendo para sitios Web, y si cambia un poco. Les dejo la estructura si lo llegan a ocupar, a mi me funciono a la perfección.
Saludos y gracias.
Partial Class _Default
Inherits System.Web.UI.Page
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
Protected Sub btnBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
Dim Process As New Diagnostics.Process
Diagnostics.Process.Start(«c:\\nombre del cocumento»)
End Sub
End Class