Botón en formulario access que abra excel dependiendo la ruta del valor de campo del registro activo

Soy nuevo en todoexpertos. Teniendo conocimientos limitados sobre Access, necesito incluir en un formulario un botón de comando que llamaré "Citar" que me lleve al libro Excel (agenda) del profesional oportuno que está identificado en un campo del registro activo. Es decir la ruta del archivo Excel a abrir dependerá del valor de este campo. He creado un código en VB donde defino la variable "TS" que contendrá el valor del campo "profesional" del registro activo. Después defino varias String con las rutas y con un condicional comparo el valor de "TS" con el nombre del profesional y cuando coincide: Call Shell(). Tengo problemas con la rutas ya que contienen espacios en blanco. Tampoco se como enlazar el "excel.exe" con la ubicación del archivo, que está en red local.

1 respuesta

Respuesta
1

Con los datos que aportas, no te puedo dar una respuesta 100% exacta para tu caso, pero al menos te soy una idea, a ver si la puedes aplicar a tu caso concreto.

Supongamos que tienes todos los archivos excel en la misma carpeta, por ejemplo "Agenda", y que está ubicada en la misma carpeta que tu archivo Access.

Supongamos también que los archivos excel tienen exactamente los mismos nombres que los que tienes en tu campo "profesional" (que es de tipo texto)

En tu botón "Citar", le generas este código:

Private Sub Citar_Click()

'Declaras las variables

Dim miRuta as String

Dim miNombre as String

'Coges el nombre del profesional

miNombre =Nz(Me.profesional,"")

'Si no hay un nombre, sales sin más

If miNombre ="" Then Exit Sub

'Creas la ruta del excel

miRuta=Application.CurrentProject.Path & "\Agenda\"

'Añades el nombre del archivo y la extensión

miRuta=miRuta & miNombre & ".xls"

'Abres el archivo

Application. FollowHyperlink miRuta

End Sub

Gracias por atender mi consulta. Tratare de ser más concreto. Te expongo lo que pretendo que haga el botón y las ubicaciones de mis archivos.

Al hacer Click en "citar", si el campo [profesional] del registro activo contiene el texto "juan" abrirá el excel de la 1ª ruta. Si contiene "Pedro" 2ª ruta.....Si está en blanco y el número de orden de la semana actual es par 6ª ruta. Si está en blanco y el número de orden de la semana actual es impar 7ª ruta.

\\redlocal\sección\impresos\citas
profesional\citas programadas\Juan\programadasjuan2014.xls
\\redlocal\sección\impresos\citas
profesional\citas programadas\Pedro\programadaspedro2014.xls
\\redlocal\sección\impresos\citas
profesional\citas programadas\Isabel\programadasisabel2014.xls
\\redlocal\sección\impresos\citas
profesional\citas programadas\María\programadasmaria2014.xls
\\redlocal\sección\impresos\citas
profesional\citas programadas\Ana\programadasana2014.xls

---------------------------------------------------------------------------------

\\redlocal\sección\impresos\citas
profesional\citas SIVO\citasivo2014semanapar.xls
\\redlocal\sección\impresos\citas
profesional\citas SIVO\citasivo2014semanaimpar.xls

----------------------------------------------------------------------------------

Ubicación de la B.D. (red)

\\redlocal\sección\basesdatos\MIBASE.mbd.

Ubicación excel (mi equipo)

C:\Archivos de programa\Microsoft Office\OFFICE11\EXCEL.EXE

Un saludo y gracias de nuevo.

Prueba esto:

Private Sub citar_Click()

'Declaras las variables
Dim miRuta as String
Dim miNombre as String
'Coges el nombre del profesional
miNombre =Nz(Me.profesional,"")

'Evalúas las distintas posibilidades

Select Case miNombre

Case "Juan"

miRuta="\\redlocal\sección\impresos\citas profesional\citas programadas\Juan\programadasjuan2014.xls"

Case "Pedro"

miRuta="\\redlocal\sección\impresos\citas profesional\citas programadas\Pedro\programadaspedro2014.xls"

'------------------------------------------------

'aquí seguirías con los otros nombres, de la misma manera

'-------------------------------------------------

Case Else 'Si el campo está en blanco

If DatePart("ww",Date) Mod 2=0 Then 'Si la semana es par

miRuta="\\redlocal\sección\impresos\citas profesional\citas SIVO\citasivo2014semanapar.xls"

Else

miRuta="\\redlocal\sección\impresos\citas profesional\citas SIVO\citasivo" & Year(Date) & "semanapar.xls"miRuta="\\redlocal\sección\impresos\citas profesional\citas SIVO\citasivo2014semanaimpar.xls"

End If

End Select

'Abres el archivo
Application.FollowHyperlink miRuta

End Sub

Esto te debería funcionar. Ahora bien, al cambiar de año, si haces otro archivo excel (por ejemplo "programadasjuan2015.xls") tendrás que reprogramar el código.

Otra opción, un poco más "compleja", sería construir la ruta dinámicamente en funcion del año actual y del valor seleccionado:

Private Sub citar_Click()
'Declaras las variables
Dim miRuta as String
Dim miNombre as String
'Coges el nombre del profesional
miNombre =Nz(Me.profesional,"")
'Evalúas las distintas posibilidades
If miNombre<>"" Then
miRuta="\\redlocal\sección\impresos\citas profesional\citas programadas\" & StrConv ( miNombre, vbProperCase) & "\programadas" & LCase(miNombre) & Year(Date) & ".xls"

Else 'Si el campo está en blanco
If DatePart("ww",Date) Mod 2=0 Then 'Si la semana es par
miRuta="\\redlocal\sección\impresos\citas profesional\citas SIVO\citasivo" & Year(Date) & "semanapar.xls"

Else

miRuta="\\redlocal\sección\impresos\citas profesional\citas SIVO\citasivo" & Year(Date) & "semanaimpar.xls"
End If
End If
'Abres el archivo
Application.FollowHyperlink miRuta
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas