我现在的问题使用的方法:
http://community.csdn.net/Expert/topic/3040/3040090.xml?temp=.1641199
在此方法使用中遇到的乱码问题:
http://community.csdn.net/Expert/topic/3170/3170327.xml?temp=.7827875
相关问题涉及:
http://community.csdn.net/Expert/topic/3206/3206839.xml?temp=5.350894E-02
其中第三个贴子也是我发的,那个问题我绕个弯子解决了,
也就是说在龙卷风大哥代码s_ReadFile的最后应把:
********************************************
OLE1.SourceDoc =App.Path & "\cc.doc"
        OLE1.Action = 1    'use the old action method
        OLE1.SizeMode = vbOLESizeAuttoSize    '调节对象大小使其正好充满OLE容器控件
*******************************************
改写成:
 Open App.Path & "\cc.doc" For Input As #3
  OLE3.ReadFromFile 3
  Close #3
*************************************
我猜想因为OLE控件是以二进制格式存储和读取文档的,所以从Stream里读给cc.Doc得仍然是二进制的文档,然后OLE控件在自动将二进制的文档转换之后显示(ReadFromFile这一步),而在那之前的Doc文档仍是二进制的,这在我用OLE1.SourceDoc =App.Path & "\cc.doc"时遇到需要转换文档的提示是符合逻辑的(因为cc.Doc仍然是二进制的),
现在的问题是如何将OLE对象中存储的长二进制数据导出到Word文档并正确显示

解决方案 »

  1.   

    我现在有点明白了,
    是不是通过OLE控件存储的数据都是带有OLE文件头的,只有OLE控件才能读出数据,各位说是吗?
      

  2.   

    我也不知道,我也正迷惑呢.把存入数据库的文件读出时运行到stream.write rst.field("filename").value时出错了,我也不知道为什么,如能成功,用stream.savetofile就能轻松解决,可惜,唉!
    然后用OLE1.CreateEmbed filename就可嵌入该文件了.