Hola, primero comentaros que el objetivo es un campo OLE  de una BD Access. Para las dudas, pues que MiBufer() lleva paréntesis para poder dimensionarlo a tu gusto, si no lo haces meterás datos en blanco que te fastidiarán la imagen/animación/cosa que estés metiendo :).
¿Qué hacemos? Pos mu sencillo booo :( . Pues definimos un tamaño de bufer (const TamBufer). Por ahí leí que debía ser múltiplo de 1024, aunque yo probé con distintas cifras y no hubo diferencia, quizá porque utilicé fotos pequeñas.
Calculamos número de ¿trozos? (¿como leche se traduce chunk?), y como quieras, antes o después, metes el espacio sobrante. Después, el número de chunks. Y ya lo tienes.
Para sacar las imágenes pues igual. No necesité hacer la función porque sólo me interesaba sacar el campo imagen por Crystal. Simplemente en vez de la función AppendChunck pues utilizas GetChunk, y saber que necesitarás un archivo temporal donde volcar la imagen, después la utilizas donde quieras y borras el archivo.  
Sub InsertarBLOB(MIRegistro As ADODB.Recordset, _
    MINombreCampo As String, MIRutaArchivo As String) 
    Dim TamTotal As Long
    Dim TamRestante As Integer
    Dim NumeroChunks As Long
    Dim MIBufer() As Byte
    Dim Archivo As Integer
    Dim i As Integer 
    Const TamBufer = 8192 
    'On Local Error GoTo ControlError 
    'Abrimos el archivo y le calculamos el tamaño y numero
    'de "chunks" que tenemos que añadir a la BD 
    Archivo = FreeFile
    Open MIRutaArchivo For Binary Access Read As Archivo 
    TamTotal = LOF(Archivo)
    NumeroChunks = TamTotal \ TamBufer
    TamRestante = TamTotal Mod TamBufer 
    'Añadimos primero el trozo restante, redimensionando el
    'bufer al tamaño que necesitamos 
    ReDim MIBufer(TamRestante)
    Get Archivo, , MIBufer
    MIRegistro(MINombreCampo).AppendChunk MIBufer 
    'Redimensionamos el bufer al tamaño establecido y añadimos
    'el numero de "chunks" que establecimos antes 
    ReDim MIBufer(TamBufer)
    For i = 1 To NumeroChunks
        Get Archivo, , MIBufer
        MIRegistro(MINombreCampo).AppendChunk MIBufer
    Next i 
    'Terminado. Ahora a casita que llueve ... 
    Close Archivo
    MIRegistro.Update
    Exit Sub 
ControlError:
    Close Archivo 
End Sub 
Lo de la calidad de la imagen, después de investigar, creo que se debe a redimensionar la imagen en el informe de Crystal, para entendernos, la propiedad Stretch de las PictureBox. Curioso, pero en los informes/formularios de Access pasa exactamente lo mismo.
Si alguien quiere añadir algo a la historia esta, pues mejor, que yo aquí sólo soy un mandao y mucho muchito me queda que aprender. Y para dudas, mi dir. es 
[email protected] .
Un saludo, agradecimiento, felicitación, etc. a todos los mostros que participan en los foros. 
    Anubis