从访问 OLE 对象中提取文件

问题描述 投票:0回答:1

如何从 Access 的表格中取出这些 pdf 格式的包文件并将其移动到文件夹中

如果可以的话,也提取(产品名称)和(pdf),那就太棒了;让我知道是否有解决办法;我会的。

例如这个

enter image description here

这是文件:我作为示例创建的文件。如果可以的话,请检查并让我知道该文件的问题。另外,请指导我提取 PDF 文件所需的命令

我在VBA中使用了这段代码;没回答 ;如果编码以外的其他方式也有效;说声谢谢

Sub ExportPDFs()
    Dim rs As DAO.Recordset
    Dim filePath As String
    Dim fileNum As Integer
    
    
    
    Set rs = CurrentDb.OpenRecordset("SELECT pakage FROM Table1 ")
    
    If rs.RecordCount > 0 Then
        filePath = "C:\Users\AliReza\Desktop\folder\"
        
        rs.MoveFirst
        Do Until rs.EOF
            fileNum = FreeFile
            Open filePath & rs.Fields("pakage") & ".pdf" For Output As #fileNum
            Put #fileNum, , rs.Fields("Package").Value
            Close #fileNum
            
            rs.MoveNext
        Loop
    End If
    
    rs.Close
    Set rs = Nothing
End Sub
vba ms-access ms-access-2010 public
1个回答
0
投票

首先,您需要两个不同的列用于文档名称(我们称之为

Name
)和存储文档的 OLE 对象 (
Package
)。

然后您可以使用

ADODB.Stream
将 OLE 对象存储到文件中。

Sub ExportPDFs()
    Dim rs As DAO.Recordset
    Dim folder As String, path As String
    Dim adoStream As Object 'Late bound ADODB.Stream
    
    folder = "C:\Users\AliReza\Desktop\folder\"
    Set rs = CurrentDb.OpenRecordset("SELECT Name, Package FROM documents")
    Do Until rs.EOF
        path = folder & rs!Name & ".pdf"
        
        Set adoStream = CreateObject("ADODB.Stream")
        adoStream.Type = 1 'adTypeBinary
        adoStream.Open
        adoStream.Write rs("Package").Value
        adoStream.SaveToFile path, adSaveCreateOverWrite
        adoStream.Close
        
        rs.MoveNext
    Loop
    
    rs.Close
    Set rs = Nothing
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.