[英]How to overwrite a table in Access when importing data from a spreadsheet using the DoCmd.TransferSpreadsheet Method?
[英]How to filter columns when adding data into MS Access using DoCmd.TransferSpreadsheet?
我有一個帶有兩張紙的 excel 文件。 第一個我想將整個工作表添加到 MS Access 表中 - 到目前為止,這段代碼正在實現這一點。 但是對於第二張表(sheet2),我希望能夠過濾列並從該表創建兩個表。 所以我想從列 A1:B1,E1:F1 中創建第一個表范圍,並包括它下面行中的任何數據。 然后對於另一個表,我希望列是 C1:D1。
這是我嵌入到 Access 表單上的導入按鈕中的代碼:
Private Sub btnImportSpreadsheet_Click()
Dim FSO As New FileSystemObject
If FSO.FileExists(Nz(Me.txtFileName, "")) Then
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Sheet1", _
Me.txtFileName, True, "Sheet1!"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Sheet2", _
Me.txtFileName, True, "Sheet2!"
Else
MsgBox "File not found"
End If
End Sub
單擊導入后,這將在 Access 中創建兩個表 sheet1 和 sheet2。
我試圖做的是通過將 A1:B1,E1:F1 添加到 Range 區域(Sheet2: 所在的位置)來過濾它,如下所示:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Sheet2", _
Me.txtFileName, True, "A1:B1,E1:F1"
但是當我運行該代碼時,它告訴我:“Microsoft Access 引擎找不到 object "A1:B1,E1:F1" - 我認為它不允許像這樣的多范圍。
另一個問題是,當我只使用“A1:B1”時,它只會返回列,而它下面的行中沒有任何數據。
如何從 Sheet2 創建兩個表,第一個表是 A1:B1,E1:F1,第二個表是 C1:D1?
謝謝
編輯:在 June7 的幫助下,解決方案是添加一個 currentDb(),然后從中執行刪除特定字段名稱的 SQL 查詢:
If FSO.FileExists(Nz(Me.txtFileName, "")) Then
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Sheet2", _
Me.txtFileName, True, "Sheet2!"
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Sheet3", _
Me.txtFileName, True, "Sheet3!"
Set dbs = CurrentDb()
dbs.Execute "ALTER TABLE Sheet3 DROP COLUMN a_field_name"
Else
MsgBox "File not found"
End If
結束子
導入完整的工作表,然后修改表格。 選項:
CurrentDb.Execute "SELECT Field3, Field4 INTO Table2 FROM Table1"`
CurrentDb.Execute "ALTER TABLE Table1 DROP COLUMN Field3, Field4"
For x = 2 to 3
CurrentDb.TableDefs("Table1").Fields.Delete CurrentDb.TableDefs("Table1").Fields(x).Name
Next
但是,由於您似乎真的想對同一個表執行多個導入,建議將完整范圍導入“臨時”表,然后使用 SQL INSERT SELECT 操作將記錄“移動”到永久表。 臨時表可以是永久的,並且在每個導入過程之前刪除記錄,也可以刪除和創建表。 也許遍歷所有 1,000 個工作簿以導入每個然后在外部循環執行 INSERT SELECT 操作以拆分為永久表並刪除臨時表。 取決於涉及多少條記錄,以及 memory 是否可以處理 SQL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.