SoloCodigo

Bases de Datos => MS Access => Mensaje iniciado por: Goliat2000 en Miércoles 21 de Septiembre de 2011, 20:56

Título: pasar variable a comando Shell
Publicado por: Goliat2000 en Miércoles 21 de Septiembre de 2011, 20:56
Hola a todos; quiero pediros ayuda para una línea de código VBA que no acierto a conseguir. Tengo un formulario de consulta de libros, cuyo identificador es IdLibro; a su vez, en formato word, tengo unos escritos sobre comentarios a los libros. Cada word se identifica con el mismo numero de Idlibro; es decir, IdLibro= 12 , pues el escrito de ese libro se llama 12.doc. En el formulario de Access tengo puesto un botón de comando que al hacer click, quiero que me abra el texsto de word que corresponda en ése  momento al IdLibro que tenga el formulario. Ejecuto la siguiente línea de código:

     X = Me.IdLibro
    Call Shell("C:\Microsoft Office\OFFICE11\WINWORD.exe C:\LecturasLibros\'" & X & ".doc")
 
y no me funciona a medias; el codigo me abre el word, pero no  me abre el texto de word que debe abrir; la verdad,  no se como podria pasarle la variable X teniendo en cuenta que, dicha variable X debe recoger el identificador de libro. Además, también me da un error en "X=Me.IdLibro" de que no coinciden los tipos.

Por favor, ¿alguien podría ayudarme e indicarme como sería el código correcto?

Gracias anticipadas y un saludo a todos
Título: Re:pasar variable a comando Shell
Publicado por: F_Tanori en Jueves 22 de Septiembre de 2011, 21:27
Hay un error en, un apostrofe

Citar
Call Shell("C:\Microsoft Office\OFFICE11\WINWORD.exe C:\LecturasLibros\'" & X & ".doc")

Y creo que seria mejor utiliza un método como este en lugar de shell (que seria mejor ShellExecute (http://www.elguille.info/vb/API/ejecutar_acceso_directo.aspx))  :
Código: Visual Basic
  1. Function AbrirArchivo(RutaDoc As String) As Boolean
  2. On Error GoTo xError
  3.     Dim Word As Object
  4.     Set Word = CreateObject("Word.Application")
  5.         Word.Visible = True
  6.         Word.Documents.Open (RutaDoc)
  7.     Set Word = Nothing
  8.     AbrirArchivo = True
  9. xError:
  10.     If Err.Number > 0 Then
  11.        AbrirArchivo = False
  12.     End If
  13. End Function
  14.  

Uso:
Código: Visual Basic
  1. X = Me.IdLibro
  2. If AbrirArchivo("C:\LecturasLibros\" & X & ".doc") Then
  3.    MsgBox "No fue posible abrir el archivo", vbCritical
  4. End If

Saludos