2010-05-25 99 views
4

什麼是從Access 2007應用程序中讀取(只讀)Excel文件的「最佳」方式。我只想循環遍歷行並將數據放入Access表中。將Excel文件讀入Access數據庫的最佳方法

我不想通過VBA手動導入(獲取外部數據對話框)。用戶通過瀏覽按鈕獲取表單,然後指向具有定義的內容/格式的Excel文件。之後,VBA代碼讀取數據並將其放入Access數據庫。

回答

7

您可以嘗試DoCmd.TransferSpreadsheet方法。

DoCmd.TransferSpreadsheet acImport, , "from_excel","C:\Access\demo.xls", True 

將電子表格數據導入名爲from_excel的表中,並假定電子表格的第一行包含字段名稱。有關更多詳細信息,請參閱TransferSpreadsheet的訪問幫助或在線here

3

如果要讀取整個電子表格,可以將Excel電子表格直接導入到Access中。見herehere

您也可以選擇鏈接到Excel電子表格,而不是導入它。這樣,Excel電子表格中的任何更改都會反映在鏈接表中。但是,您將無法從Access內進行更改。

第三個選項是在Access中編寫一些VBA代碼來打開一個記錄集並讀取電子表格。請參閱KeithG的答案this thread。你可以做這樣的事情在VBA來打開電子表格:

Dim xl As Excel.Application 
Dim xlsht As Excel.Worksheet 
Dim xlWrkBk As Excel.Workbook 

Set xl = CreateObject("Excel.Application") 
Set xlWrkBk = GetObject("H:/ggg.xls") 
Set xlsht = xlWrkBk.Worksheets(1) 
+0

謝謝,優秀的內容,但我的意思是VBA的一個選項。我已經擴展了這個問題,參見上文 – waanders 2010-05-25 14:31:56

+0

查看我的編輯帖子,瞭解如何通過VBA訪問電子表格的一些信息。 – TLiebe 2010-05-25 14:37:38

+0

您可以使用DoCmd.TransferSpreadsheet在VBA中運行導入。這個答案似乎很不完整,沒有提到這一點,在我看來。 – 2010-05-25 18:08:41

0

嘗試是這樣的:通過行和列

Dim excelApp As Excel.Application 
Dim workbook As Excel.Workbook 
Dim worksheet As Excel.Worksheet 

Set excelApp = CreateObject("Excel.application") 
Set workbook = excelApp.Open("C:\someFileName.xls") 
Set worksheet = workbook.Worksheets(1) 

然後循環,從細胞中提取數據,並插入它進入數據庫。 (您可以使用worksheet.cells方法。)嘗試在Google上搜索代碼示例。

+0

那麼,您如何遍歷行和列?我想將xlsx導入到表中,但由於列不一定與表中的列匹配,所以我需要手動執行一些重定向。 – Hill 2017-04-29 17:43:55

相關問題