在Access数据库中存储Excel模板

时间:2014-07-02 15:01:25

标签: windows vba ms-access access-vba ms-access-2013

我想要的是什么:

我正在使用MS Access数据库为安大略省专业工程大学认证委员会制作报告。 PEO在MS Excel中有他们的模板,我必须使用他们的确切格式。

我想将数据从Access数据库输出到Excel表格(很简单),但我想在生成新文件时复制它们的格式。 (我不想保留一个空的模板文件并每次都复制它。)

所以基本上我希望以某种方式将模板存储在代码中。 (欢迎提出其他建议!)

我尝试了什么:

你们当中有些人会读到这个并认为我是个白痴。但我尝试的是通过API Code从MS剪贴板上的excel获取数据,并将DataObject存储为(我希望)某种字符串。

但我无法保留原始MS Excel模板的格式或单元格着色。

有什么建议吗?...

2 个答案:

答案 0 :(得分:3)

您可以通过创建包含Attachment字段的表

将Excel模板存储在数据库中

DesignView.png

创建记录并将Excel模板另存为该记录的附件

AttachmentsDialog.png

然后使用这样的VBA代码在需要时将Excel文档的新副本保存到磁盘:

Option Compare Database
Option Explicit

Public Sub SaveReportTemplateToFile()
    Dim cdb As DAO.Database, rowRst As DAO.Recordset, attachRst As DAO.Recordset2, attachField As DAO.Field2
    Set cdb = CurrentDb
    Set rowRst = cdb.OpenRecordset("SELECT TemplateFile FROM ReportTemplates WHERE ID=1")
    Set attachRst = rowRst.Fields("TemplateFile").Value
    Set attachField = attachRst.Fields("FileData")
    attachField.SaveToFile "C:\Users\Gord\Desktop\" & attachRst.Fields("FileName").Value
    Set attachField = Nothing
    attachRst.Close
    Set attachRst = Nothing
    rowRst.Close
    Set rowRst = Nothing
    Set cdb = Nothing
End Sub

答案 1 :(得分:1)

您要做的是首先将所有数据导出到空白模板的新工作表中,然后将所有数据链接到模板上的正确位置,然后删除包含所有数据的工作表,同时保留模板上的数据。

据我所知,没有更快的方法可以做到这一点,但这是一个例子:http://www.rogersaccesslibrary.com/forum/topic350.html

如果模板安装得好,这将是一项相当重要的工作,但是可行。