2014-07-02 53 views
1

我想要什麼:

我正在使用MS Access數據庫生成安大略省專業工程大學認證委員會的報告。 PEO在MS Excel中有他們的模板,我必須使用他們的確切格式。將Excel模板存儲在我的Access數據庫中

我想從Access DB輸出數據到Excel工作表(很簡單),但我想在生成新文件時複製它們的格式。 (我不想保留一個空的模板文件並每次都複製它)。

所以基本上我在尋找以某種方式將代碼存儲在模板中。 (其他建議,歡迎!)

我已經試過:

你們有些人會讀這一點,並認爲我是個白癡。但我所嘗試的是通過API Code從MS剪貼板上的Excel中獲取數據,並將DataObject存儲爲(我希望的)某種字符串。

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

有什麼建議?...

+0

您使用的是哪個版本的Access? –

+0

MS Access 2013. – Phibins

回答

3

你可以通過創建包括Attachment

DesignView.png

創建記錄和保存Excel模板作爲附件到記錄表存儲在數據庫中的Excel模板(S)

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 
+0

這看起來很棒!因此,在表中存儲附件意味着數據庫有一個硬拷貝?所以我不需要保存與Access數據庫的.xls文件? – Phibins

+0

@ user3163380是的,附件文件被保存爲數據庫中的對象。 –

+0

謝謝,這是對我的問題的一個很好的答案!並感謝你的屏幕截圖,他們非常有幫助 – Phibins

1

什麼你將要做的是首先導出所有的數據到一個空的模板的新工作表,那麼所有的數據鏈接到正確的位置上的模板,然後刪除包含所有數據的工作表,將數據保留在模板上。

據我所知,這樣做沒有更快的方法,但這裏有一個例子:http://www.rogersaccesslibrary.com/forum/topic350.html

這將是一個相當的工作,但可行的,如果模板是很好的設置。

+0

謝謝你的回答,但正如我所提到的;我想以某種方式避免將Excel模板放在一起。 我想以編程方式複製模板格式,這種方式如果我移動Access數據庫,我不必保持它與外部Excel文件綁定。 (這也可以避免複製到一張空白模板的新表格,然後鏈接到另一張表格)歌曲和舞蹈 – Phibins

+0

爲什麼不將模板存儲在Access數據庫中?通過代碼完全複製模板看起來像很多工作沒有明顯的好處。 –

+0

@TimWilliams是的,我不知道你能做到這一點。我接受這是最好的答案(來自Gord T)。感謝您的建議! – Phibins

相關問題