ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 13073|回复: 10

Access长二进制数据导出

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-6-6 19:34 | 显示全部楼层 |阅读模式
如题,如何将ACCESS长二进制数据导出到独立文件中去.
[此贴子已经被作者于2006-7-18 13:00:59编辑过]

TA的精华主题

TA的得分主题

发表于 2006-6-6 20:36 | 显示全部楼层
我只知道用ADO.Stream的savetofile方法。其它的还不知道怎么用。高人指点

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-7 12:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

具体怎么做,特别是在不知道二进制数据到底装载的什么类型文件数据的情况下,请高人指点.

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-8 16:01 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-9 18:26 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-6-21 11:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

怎么没人理会

TA的精华主题

TA的得分主题

发表于 2006-6-23 15:30 | 显示全部楼层
原则是不可以的.但是可以用一些其它方法,直接读取 OLE 包的头字节。比如说 OLE ClassKey,它位于这个 OLE 包的前21-40个字节。现在已经可以分析出一些已知格式的文件,比如:XLS,DOC,JPG 等。如果是其他格式请您自己分析,如果你有足够的耐心可以寻找各种类型的文件存储在ole字段中的文件头,然后加以识别。

TA的精华主题

TA的得分主题

发表于 2006-6-23 15:32 | 显示全部楼层

可以参考一下:

Option Compare Database 
Option Explicit 

Public Function GetFromFile(strTable As String, strField As String, strFilter As String, objFileName As String) As Boolean 

'============================================================ 
' 过程函数名: CommModule.GetFromFile 类型:Function 
' 参数: 
'     strTable (String)  :准备保存图形数据的表名称 
'     strField (String)  :准备保存图形数据的字段名称 
'     strFilter (String)  :打开表的过滤字符串,用于定位并确保被打开的表的数据的唯一性 
'     objFileName (String) :准备输入到表里边的图象文件名称 
' 返回:如果保存成功,返回True,如果失败,返回False 
'------------------------------------------------------------- 
' 说明:把图象文件的数据保存到表里边 
'------------------------------------------------------------- 
' 修订历史: 
'============================================================= 
Dim recset   As ADODB.Recordset, FileData() As Byte, FileNo As Long, FileSize As Long, strSQL As String 

  strSQL = "Select " & strField & " From " & strTable & " Where " & strFilter & ";" 
  Set recset = New ADODB.Recordset 
  recset.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic 
  GetFromFile = True 
  If recset(strField).Type <> DB_OLE Or Not IsFileName(objFileName) Then 
    GetFromFile = False     '如果字段不是OLE字段,或者文件不存在,返回错误 
    GoTo EndGetFromFile 
  End If 
  If recset.EOF Then       '如果记录不存在,返回错误 
    GetFromFile = False 
    GoTo EndGetFromFile 
  End If 
  FileSize = GetFileSize(objFileName) '如果被打开的文件大小为零,返回错误 
  If FileSize <= 0 Then 
    GetFromFile = False 
    GoTo EndGetFromFile 
  End If 
  ReDim FileData(FileSize)      '重新初始化数组 
  FileNo = FreeFile          '获取一个空闲的文件号 
  Open objFileName For Binary As #FileNo '打开文件 
  Get #FileNo, , FileData()      '读取文件内容到数组 
  Close #FileNo            '关闭文件 
  recset(strField).value = FileData() '保存数据 
  recset.Update            '更新数据 
  Erase FileData           '释放内存 
EndGetFromfile: 
  recset.Close            '关闭RecordSet 
  Set recset = Nothing        '释放内存 
End Function 

Public Function SaveToFile(strTable As String, strField As String, strFilter As String, strFileName As String) As Boolean 
'============================================================ 
' 过程函数名: CommModule.SaveToFile 类型:Function 
' 参数: 
'     strTable (String)  :保存图形数据的表名称 
'     strField (String)  :保存图形数据的字段名称 
'     strFilter (String)  :打开表的过滤字符串,用于定位并确保被打开的表的纪录的唯一性 
'     strFileName (String) :准备保存的图象的文件名称 
' 返回:如果保存成功,返回True,如果失败,返回False 
'------------------------------------------------------------- 
' 说明:把由GetFromFile函数保存到表中OLE字段的数据还原到文件 
'------------------------------------------------------------- 
' 修订历史: 
'============================================================= 
Dim recset   As ADODB.Recordset, FileData() As Byte, FileNo As Long, FileSize As Long, strSQL As String 

  strSQL = "Select " & strField & " From " & strTable & " Where " & strFilter & ";" 
  Set recset = New ADODB.Recordset 
  recset.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic 
  SaveToFile = True 
  If recset(strField).Type <> DB_OLE Then 
    SaveToFile = False     '如果字段不是OLE字段,返回错误 
    GoTo EndSaveToFile 
  End If 
  If recset.EOF Then       '如果记录不存在,返回错误 
    SaveToFile = False 
    GoTo EndSaveToFile 
  End If 
  FileNo = FreeFile 
  Open strFileName For Binary As #FileNo 
  ReDim FileData(recset(strField).ActualSize) '重新初始化数组 
  FileData() = recset(strField).GetChunk(recset(strField).ActualSize) '把OLE字段的内容保存到数组 
  Put #FileNo, , FileData()  '把数组内容保存到文件 
  Close #FileNo 
  Erase FileData 
EndSaveTofile: 
  recset.Close 
  Set recset = Nothing 
End Function
'上述代码来源于AccXP网站

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-18 12:56 | 显示全部楼层

zhengjialon版主,帮分析一下

zhengjialon版主,请帮分析一下这个文件中cellfile字段的文件格式是什么,谢谢!!

oG0UKPCk.rar (27.93 KB, 下载次数: 35)
[此贴子已经被作者于2006-7-18 17:09:11编辑过]

G4vowBDd.rar

27.93 KB, 下载次数: 31

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-18 15:22 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 02:53 , Processed in 0.042303 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表