2017-10-13 49 views
3

我正試圖從Excel文檔中將特定列轉移到Access數據庫中的表中。例如我的Excel工作表可能包含以下內容:將Excel中的特定列轉移到Access表中的特定列

Date Last First Gender Month School Grade 
10/1 Rode Danny Male  Sept. Ro ISD  10 
10/2 Dode Manny Male  Sept. Ro ISD  11 

而且我對我的數據庫學生表可包括以下字段:

Type Source Phone Email Last First School Major School Grade 

我只希望出口標記Excel列:姓氏,名字,學校,年級,並把它們放在我學生表的各自專欄中。我已經通過訪問了解VisualBasic中的DoCmd.TransferSpreadSheet,但我不確定這是否是解決方案或者是否有其他方法。任何幫助將不勝感激,因爲它會減少我很多時間!謝謝!

回答

2

有很多方法可以做到這一點。一種快速方法是將Excel電子表格中的所有數據導入到表格中(即「MyExcelImportTable」)。然後,您可以創建並運行一個查詢,以追加所需的數據。

INSERT INTO MyStudentTable(Last, First, School, Grade) 
SELECT Last, First, School, Grade FROM MyExcelImportTable 
+0

@alpha_nom,從菜單:創建 - >查詢設計。然後在最左邊的Design選項卡(現在應該打開)中選擇「SQL」。然後粘貼或輸入代碼到窗口中。然後點擊「運行」圖標(應該在標籤條的左側)。 – AndrewBanjo1968

+0

@alpha_nom:我忘記提及在打開設計選項卡後,您將需要關閉彈出的「顯示錶格」對話框,然後才能看到上方/左側出現「SQL」按鈕。 – AndrewBanjo1968

+0

會有一種方法讓我在查詢中添加sql代碼,它告訴我由於重複的電子郵件,哪些行不附加到數據庫?到目前爲止,Access只會添加非重複項,但它不會告訴我哪些項無法添加,因爲它們是重複項。 –

2

DoCmd.TransferSpreadSheet只會轉移整張紙。有幾個方法,你可以轉移你需要什麼:

  1. 複製所需的列到第二片,以及片

  2. 保存傳送數據爲CSV,並導入CSV,您可以在其中指定列

4

考慮直接從Excel工作表查詢,因爲兩者都可以連接到Jet/ACE SQL引擎。以下假設您的工作表數據從A1開始,並帶有列標題。在VBA DAO/ADO調用中集成下面的動作查詢,或直接將它放在Access的查詢設計(SQL模式)中。

INSERT INTO myAccessTable ([Last], [First], [School], [Grade]) 
SELECT [Last], [First], [School], [Grade] 
FROM [Excel 12.0 Xml;HDR=Yes;Database=C:\Path\To\Excel\File.xlsx].[SheetName$] 
相關問題