Hola lo que tienes que hacer es sacar las imágenes a disco , y una vez que las tengas , volver a leerlas en forma binaria y grabar en la bd. Te mando funciones que hacen todo esto.
' Función que saca el campo OLE a disco (tendras que retocarla seguramente porque usa siempre el mismo nombre de archivo y esas cosas)
Public Function RecuperarImagen(Imagen As ADODB.Field) As string
On Error GoTo ERROR:
Dim n As Integer
Dim X As Long
Dim tb() As Byte 'Variable a almacenar en bmp
Dim varImagen As Variant 'Variable para de donde viene el arreglo
If IsNull(varImagen) Then
GoTo salida
End If
tb = Imagen.Value
Dim ruta As String
ruta = App.Path & "\tmp.bmp"
If Dir$(ruta) <> "" Then
Kill ruta
End If
n = FreeFile
Open ruta For Binary As n
Dim LONGITUD As Long
LONGITUD = UBound(tb())
Dim i As Long
For i = 0 To LONGITUD
Put #n, , tb(i)
Next
Close #n
RecuperarImagen = ruta
salida:
Exit Function
ERROR:
'manejar el error
Resume salida
End Function
Una vez que tenemos la imagen en disco, la cargamos en un array de bytes con esta función:
Public Function f_Convierte_Binario(Imagen As String) As Variant
On Error GoTo ERROR:
Dim i As Integer
Dim X As Long
Dim tb() As Byte
i = FreeFile
Dim ll_lon As Long
Open Imagen For Binary As i
ll_lon = LOF(i)
ReDim Preserve tb(ll_lon + 1)
For X = 0 To ll_lon
Get #i, , tb(X)
Next
Close #i
salir:
f_Convierte_Binario = tb
Exit Function
ERROR:
'Manejar el error
Resume salir
End Function
En este punto ya solo falta pasar los datos al recordset, lógicamente debes adaptar la select, los campos y la conexion
Dim binario() As Byte
binario = f_Convierte_Binario("ruta de la imagen")
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "Select id,imagen from TuTabla where id =3",conexion, adOpenStatic, adLockOptimistic
rst.Fields("imagen") = binario()
rst.Update
rst.Close
Saludos