我参考 ExcelHome 论坛的“Excel VBA实战精粹”中的片段:数据库ADO的应用里的问题份代码,再在 Access里修改一下后,发给你参考。
此代码对一般的“长二进制图片字段”的读取应该没问题。只是如果有其他格式的字段,就不知道了。因为Access的 OLE 图片字段是个相当复杂的字段。如有的需要用到 PictureData 属性等等的,反正我是对这个东东有点摸不着头脑。
不再多做说明,代码如下,需要要读取图片时,只需要调用些过程就行。我的附件里有个示例数据表及调用例子。
'参数:strTableName: 保存图片的表的名字
' strPictureFld:图片字段名
' strNameFld: 图片将保存的名字的字段
' strPaht: 保存文件的路径
Sub ReadPicture(strTableName As String, strPictureFld As String, strNameFld As String, strPath As String)
Dim Cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim strSql As String
Dim BtArr() As Byte '二进制数组
Dim myPath As String
Dim myTable As String
Dim TmPath As String
Dim f '用来给FreeFile函数返回一个文件号
On Error GoTo ErrMsg
strSql = "Select [" & strPictureFld & "], [" & strNameFld & "] From [" & strTableName & "];"
Set Cnn = CurrentProject.Connection
Rst.Open strSql, Cnn, adOpenForwardOnly, adLockOptimistic, adCmdText
Do While Not Rst.EOF
If IsNull(Rst(strPictureFld)) Then
'无相片,什么也不做
Else
TmPath = strPath & "\" & Rst(strNameFld).Value & ".bmp"
BtArr = Rst(strPictureFld).Value
f = FreeFile
Open TmPath For Binary Access Write As #f '以二进制方式打开文件
Put #f, , BtArr
Close #f
End If
Rst.MoveNext
Loop
Exit Sub
ErrMsg:
MsgBox Err.Description, , "错误报告"
End Sub
点击下载此附件