我正在嘗試自動添加新的txt文件,它們都具有相同(已知)佈局。使用VBA導入帶分隔符的文本
使用選項卡(TAB按鈕)分隔列。是否有可能像在Access嚮導中那樣在VBA中執行此操作以導入文本文件?
我正在使用VBA
我正在嘗試自動添加新的txt文件,它們都具有相同(已知)佈局。使用VBA導入帶分隔符的文本
使用選項卡(TAB按鈕)分隔列。是否有可能像在Access嚮導中那樣在VBA中執行此操作以導入文本文件?
我正在使用VBA
的DoCmd.TransferText
方法你需要經歷一次嚮導,使您的規範文件。爲此,請像正常一樣導入文本文件,但在深入到嚮導中之前,請點擊左下角的「高級...」按鈕。這是您製作規格文件的地方。
讓LL這些列與您輸入的文件,數據類型和所有。請確保選擇{tab}
字段分隔符和相應的文本限定符(如果使用的是)。
保存規格(其可之後又回到這個相同的屏幕和點擊Specs...
進行編輯然後保存在你的舊)
現在您可以在VBA中使用這樣
DoCmd.TransferText acImportDelim, "your spec name", "destination table name", sourceFilePath
有一個參數HasFieldNames
,你必須根據你的文件來決定它是否是true
或false
。
從技術上講,您還可以使用新的導入/導出配置文件API從XML組裝自己的I/O規範。這很棘手,但可能 - 我以前自己做過。請參見[ImportExportSpecification](http://msdn.microsoft.com/zh-cn/library/ff820988.aspx),[新導入/導出規範OM](http://blogs.msdn.com/b/thirdoffive/) archive/2006/10/12/the-new-import-export-specification-om.aspx),[新的導入/導出規格UI](http://blogs.msdn.com/b/thirdoffive/archive/2006 /10/17/the-new-import-export-specifications-ui.aspx) – 2013-02-25 14:34:30
@JoshuaHonig你自己有什麼好處?映射是否比這個方法「更好」?這是一個相當快的過程,不是嗎? – Brad 2013-02-25 14:42:53
您可以在運行時即時創建規格。有時候這是必要的,特別是如果一個應用程序分發給其他人。 – 2013-02-25 15:24:43
使用導入嚮導的缺點是,即使在文件格式絲毫的改變,你必須通過所有這些步驟再次單擊以獲取導入工作。
查看@ Remou在ms Access import table from file in a query中的回答,瞭解使用直接SQL執行此操作的方法。我實際上在我的一個項目中使用了相同的方法。我用的是這樣的(見我的鏈接,詳細信息):
insert into MyTable (column-list...)
select (column-list...)
from [data-source-specifications].[file-name]
any-other-clauses...;
只是一個警告。如果將此SQL語法放入正常的Access查詢對象中,Access很可能會將其破壞到無法打開查詢對象的程度。因此,在Access中試用時,將查詢編寫並保存在文本文件中。一旦查詢測試工作,將其保存在VBA子程序,使Access將正好運行原樣,像這樣:
sub MyTableImport()
sqlStr = " insert into MyTable (column-list) " ' leave a space at the
sqlStr = sqlStr & "select (column-list...) " ' end of each line of the string
sqlStr = sqlStr & "from [data-source-specifications].[file-name] "
sqlStr = sqlStr & "any-other-clauses... ;"
DoCmd.RunSQL sqlStr
end sub
開始與這種過程的最簡單的方法來記錄你的宏在excel/access或其他任何地方手動執行它,然後將生成的VBA並將其推廣爲輸入參數等。 – 2013-02-25 12:39:53
@JonEgerton我不相信您可以在Access中記錄宏。 – Brad 2013-02-25 15:06:44
不,但您應該可以在Excel中這樣做,然後將生成的VB重新用於代碼 - 只要您拉入正確的引用,對象模型將可用。 – 2013-02-25 15:15:52