Si te tuviera que aconsejar, te diría que no uses objetos OLE, ya que "engordan" demasiado la base. Vamos a suponer que tienes una tabla Alumnos con Idalumno, NombreAlumno, etc. Añádele un campo Ruta(texto corto).
En el formulario añade ese campo y añade también un control Imagen y en sus Propiedades-Otras-Nombre ponle ImagenFoto.
Abre el editor de VB y pega
Public Function buscaArchivo() As String
Dim fDialog As Office.FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False
.ButtonName = "Seleccionar"
.Title = "Seleccionar el archivo"
.InitialFileName = Application.CurrentProject.Path
.InitialView = msoFileDialogViewDetails
.Filters.Clear
.Filters.Add "All files", "*.*"
If .Show = True Then
buscaArchivo = .SelectedItems(1)
Else
MsgBox "Ha pulsado el botón <Cancelar>."
End If
end with
En las propiedades del cuadro de texto Ruta, en eventos-al hacer clic, crea un procedimiento de evento y entre Private Sub y End Sub escribe
Dim vArchivo As String
vArchivo = buscaArchivo()
If IsNull(vArchivo) Or vArchivo = "" Then
Exit Sub
Else
Me.ruta.Value = vArchivo
Me.ImagenFoto.Picture = Me.ruta
End If
Así, cuando hagas clic en el cuadro de texto Ruta se abrirá un "explorador", localizas la rut de l imagen que quieres guardar y por un lado, te la pone en ese cuadro de texto y por otro lado, en el control imagen te aparece esa imagen.
Puedes combinarlo con poner, en el evento Al activar el registro del formulario
If Not IsNull([ruta]) Then
Me.ImagenFoto.Picture = Me.ruta
ElseIf IsNull([ruta]) Then
Me.ImagenFoto.Picture = ""
End If
Importante, en la ventana del editor de VB pulsa Herramientas-Referencias y activa la casilla Microsoft Office 11.object library
Parece complicado, pero realmente es muy sencillo. Si ves que t lías y quieres, repito y quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo, que es como mejor se ve. Si lo haces, en el asunto del mensaje pon tu alias Antonio Cuellar, ya que si no sé quien me escribe ni los abro.