Una forma sencilla de obtener imágenes desde un escáner es a través del objeto "Kodak Image Scan Control". Inserta un objeto de este tipo en un formulario y escribe lo siguiente:
Private Sub Command1_Click()
If ImgScan1.ScannerAvailable Then
ImgScan1.OpenScanner
ImgScan1.ScanTo = FileOnly
ImgScan1.Image = "c:\scanimg.jpg"
ImgScan1.FileType = JPG_File ImgScan1.SetPageTypeCompressionOpts GoodDisplay, TrueColor24bitRGB, JPEGCompression, JPEGHighHigh
ImgScan1.ShowSetupBeforeScan = False
ImgScan1.StartScan
ImgScan1.CloseScanner
Else
'No hay escaner TWAIN
End If
End Sub
Esto es simplemente un ejemplo (probado en un HP4100C sobre XP), y básicamente lo que hace es capturar una imagen desde el escáner y guardarla en c:\scanimg.jpg. El objeto ofrece muchas posibilidades, así que tendrás que jugar con sus distintas propiedades hasta conseguir lo que quieres.
Más cosas, si usas Windows hasta el 2000, puedes conseguir el objeto "Kodak Image Scan Control" instalando el programa "Imaging" de Kodak (aparece como uno de los componentes de Windows).
En XP este programa no se incluye, pero puedes encontrar información sobre como instalarlo aquí:
http://www.parkenet.com/apl/ImageEditor.htmSi tienes XP y no te aclaras, pásame una dirección de correo y te envío un instalador.
Una vez que tienes la imagen en el fichero, puedes utilizar la siguiente función para grabar una imagen en un campo de un RecordSet:
Public Function GrabarImgBD(pRs As Recordset, pField As String, pNameFile As String) As Boolean
Const ChunkSize As Integer = 16384
Dim Chunk() As Byte, Chunks As Integer
Dim Fragment As Integer
Dim DataFile As Integer, FileLen As Long
Dim i As Integer
On Error GoTo FnErr
GrabarImgBD = False
If pField = "" Then Exit Function
DataFile = FreeFile
Open pNameFile For Binary Access Read As DataFile
FileLen = LOF(DataFile)
If FileLen > 0 Then
Chunks = FileLen \ ChunkSize
Fragment = FileLen Mod ChunkSize
'pRs.Fields(pField).AppendChunk Null
ReDim Chunk(Fragment)
Get DataFile,, Chunk()
PRs. Fields(pField). AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Get DataFile,, Chunk()
PRs. Fields(pField). AppendChunk Chunk()
Next i
End If
GrabarImgBD = True
FnFin:
Close DataFile
Exit Function
Resume
FnErr:
'ErrorManager
Resume FnFin
End Function
Saludos y no olvides valorar la respuesta.