簡體   English   中英

如何使用Excel VBA將Excel XLS轉換為Access MDB

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM