如何使用vba从excel中从数据库(varbinary max)中检索pdf文件

Posted

技术标签:

【中文标题】如何使用vba从excel中从数据库(varbinary max)中检索pdf文件【英文标题】:how to retrieve pdf file from database (varbinary max) from excel using vba 【发布时间】:2016-05-12 12:37:13 【问题描述】:

我不知道如何通过 excel vba 从数据库中检索或提取 pdf 文件? (在 c#、asp...中有很多帮助)

存储在 SQL Server 数据库的 varbinary max type 字段中的文件。

我可以通过 VBA 连接或访问记录集,然后如何从该记录集中提取它

【问题讨论】:

【参考方案1】:
Dim cn  As ADODB.Connection
Dim rs  As ADODB.Recordset
Dim sql As String
Dim oStream As ADODB.Stream

Set cn = New ADODB.Connection

'Here I use default admin user 'sa' and password is blank
cn.Open "Provider = sqloledb;" & _
        "Data Source=ServerNameOrIP;" & _
        "Initial Catalog=DBName;" & _
        "User ID=sa;" & _
        "Password=;"""

'your sql statment including varbinary max field here it is FILEDATA
sql = " select EMAILID,EMAILFROM,EMAILTO,EMAILSUBJECT,FILEDATA from Tbl "


Set rs = New ADODB.Recordset

rs.Open sql, cn

Do Until rs.EOF
    Set oStream = New ADODB.Stream
    With oStream
         .Type = adTypeBinary
         .Open
         .Write rs.Fields(4).Value
         'Here I use 1st field value as file name i.e. rs.fiedls(0).value 
         'In addition you can join drive and/or folder path to save another location
         .SaveToFile rs.Fields(0).Value & ".pdf", adSaveCreateOverWrite
         .Close
    End With
    Set oStream = Nothing
    rs.MoveNext
Loop


rs.Close
cn.Close

【讨论】:

以上是关于如何使用vba从excel中从数据库(varbinary max)中检索pdf文件的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL用VBA提取字符串

vba如何新建一个excel并且从另一个excel中导入数据到这个新建的excel中?

如何从访问数据库中的左连接中选择excel表 - EXCEL VBA

如何使用 vba 从具有多个数据字段的 excel 数据透视表中删除小计

VBA 在 64 位 Excel 中打开屏幕键盘

如何在wpf c#中从数据表导出到excel文件