Problema con FileDialog Access 2007

Estoy realizando una base de datos de clientes y he insertado en el registro de cada cliente una ruta de un archivo de imagen, para que se sobrecargue demasiado.

El problema está al añadir un botón examinar, para elegir el archivo de imagen correspondiente.

He copiado el código de la base de datos Neptuno, pero me da error 2147467259 (80004005).

El código es este:

Sub getFileName()
' Muestre el cuadro de diálogo Abrir archivo de Office para elegir un nombre de archivo
' Para el registro del empleado actual. Si el usuario selecciona un archivo,
' Muéstrelo en el control de imagen.
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Seleccione la imagen del empleado"
.Filters.Add "All Files", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "Bitmaps", "*.bmp"
.FilterIndex = 3
.AllowMultiSelect = False
.InitialFileName = CurrentProject.Path
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
Me![IDpath].Visible = True
Me![IDpath].SetFocus
Me![IDpath].Text = fileName
Me![First Name].SetFocus
Me![IDpath].Visible = False
End If
End With
End Sub



Tengo la Microsoft Access 12.0 Object Library activada y uso Windows Vista, ¿qué pasar?

1 respuesta

Respuesta
1

Te voy a cambiar algunas cosillas... tanto de código como de mecánica.

- En el editor de VB te vas a menú -> Insertar -> Módulo

- Guardas ese módulo como mdlFilePicker

- En ese módulo escribes este código:

...

Public Function getFileName() As String
' Muestre el cuadro de diálogo Abrir archivo de Office para elegir un nombre de archivo
' para el registro del empleado actual. Si el usuario selecciona un archivo,
' muéstrelo en el control de imagen.
Dim fileName As String
Dim result As Integer
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Seleccione la imagen del empleado"
.Filters.Add "All Files", "*.*"
.Filters.Add "JPEGs", "*.jpg"
.Filters.Add "Bitmaps", "*.bmp"
.FilterIndex = 3
.AllowMultiSelect = False
.InitialFileName = CurrentProject.Path
result = .Show
If (result <> 0) Then
fileName = Trim(.SelectedItems.Item(1))
If fileName = "" Then Exit Function
getFileName = fileName
End If
End With
End Function

...

OK.

- Ahora, en tu formulario, voy a suponer que el campo donde quieres guardar la ruta de la imagen se llama [Imagen] (tú debes cambiar este nombre en el código).

- En el botón (supongo que utilizas un botón) para abrir la ventana de diálogo escribes este código:

...

Private Sub...
Dim miImg As String
miImg = getFileName()
Me.Imagen.Value = miImg
End Sub

...

Con esto debería funcionarte. Además, ahora, al tener el código en un módulo, puedes llamarla desde cualquier formulario siguiendo las instrucciones que te he dado.

me sigue poniendo el mismo error, y cuando le doy a depurar me señala la misma línea del código en amarillo:

With Application.FileDialog(msoFileDialogFilePicker)

debe de haber algo mal con la librería Microsoft Access 12.0 Object Library

No me había fijado bien la primera vez. Para el FileDialog necesitas la librería

"Microsoft Office 12.0 Object Library"

Es decir, la de Office en general.

La que tienes tú registrada (¡No la quites!) Se refiere sólo a Access.

Ya me dirás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas