![](/img/trans.png)
[英]How do I set up a connection to query data inside an Excel .xls file using Excel 2002?
[英]How Do I Convert an Excel XLS to an Access MDB using Excel VBA
我需要使用Excel中的VBA來加載Access中的Excel工作簿並將其傳輸到數據庫中。
Dim acc As New Access.Application
acc.OpenCurrentDatabase "C:\Test.xls"
我到那為止,Excel崩潰了,必須重新啟動。 我的計划是使用以下內容,但我做不到。
acc.DoCmd.TransferDatabase
有任何想法嗎? 我已經搜索了幾天,什么也沒想出來。
*編輯:感謝到目前為止的答復
不幸的是,我絕對必須使用Excel VBA。 有一個excel電子表格,其中有一堆空列,這些空列被Jet引擎識別為定義的列,實際上太多了> 255(或者是> 256?)。 由於任何原因,我都不希望打開Excel工作表(這在網絡上花費的時間太長了)。 我沒有選擇或選擇正確格式化或清理它的選項。 眾所周知,將XLS電子表格轉換為訪問權限內的MDB數據庫很容易,但這不是一種選擇。 因此,就像我說的那樣,我需要在Excel中使用VBA來操縱訪問對象,以將XLS工作簿轉換為MDB數據庫。 一旦有了這個,剩下的就是蛋糕了。 非常感謝! 我喜歡這個網站。
如果您能夠在Microsoft Access中使用VBA,則此任務很簡單; 例如:
DoCmd.TransferSpreadsheet , , _
"tblImportFromExcel","C:\path\to\myfile.xls", True, "A1:B200"
TransferSpreadsheet
文檔 。
Adam Bernier的建議解決方案出了什么問題(PowerUser的新增內容涉及在Excel中使用訪問對象); 您的最后評論是在這些建議之后,您沒有回復。
Dim acc As New Access.Application
acc.OpenCurrentDatabase "C:\Test.mdb"
acc.DoCmd.TransferSpreadsheet _
TransferType:=acImport, _
Spreadsheettype:=acSpreadsheetTypeExcel8, _
TableName:="tblImportFromExcel", _
Filename:="C:\path\to\myfile.xls", _
HasFieldNames:=True, _
Range:="A1:B200"
(根據需要進行調整,尤其是HasFieldNames和Range)。 如果這不起作用,則您的Excel-Sheet可能確實存在問題。
我唯一想到的其他事情(但這將意味着打開文件)是將Excel表格另存為XML,並通過XSLT以更合適的格式轉換值,然后導入生成的XML。 但這可能有點過分(您的文件有多復雜,需要多長時間進行一次導入)。
HTH安德烈亞斯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.