2013-04-30 57 views

回答

6

DoCmd.TransferText method將SpecificationName作爲其參數之一。按照How to Create an Import Specification的說明創建並保存導入規範。

現在進入訪問選項,導航選項,並顯示隱藏/系統對象。您現在應該可以打開名爲「mSysIMEXSpecs」的表。根據SpecName列查找您之前創建的導入規格。將該導入規範的「StartRow」列更改爲3(StartRow從零開始)。

現在您應該可以使用DoCmd.TransferText方法傳遞您創建的導入規範的名稱,它將跳過您的前三行。

+0

+1偷偷摸摸!如果決定使用這種技術,那麼在代碼中記錄**這絕對是一個好主意,否則,在該數據庫上工作的下一個可憐的靈魂可能會瘋狂地試圖找出爲什麼最初的行會被跳過。不過,謝謝分享! – 2013-04-30 14:18:59

+0

好點。我實際上編寫了一個類模塊,它以編程的方式管理我的導入/導出規格,因爲在嘗試調試問題時,我厭倦了查找現有規範。但是這是一篇我不想進入的博客文章! – mwolfe02 2013-04-30 14:54:20

+0

@ mwolfe02我只是這樣做,它的工作表示感謝。我只想指出StartRow是基於0的。在我的情況下,我想跳過2行,並且我在StartRow中輸入2,所以對於這個例子他應該在StartRow中輸入3。如果他進入4,他將失去一行數據。 – mendel 2013-10-24 17:02:36

1

在Access VBA我會使用兩個TextStream對象,一個到.ReadLine原始CSV文件線由行和對方.WriteLine到一個臨時文件,跳過的前三行的輸入文件的。在Scripting.FileSystemObject上進行一些網絡搜索,我相信你會找到一些示例代碼。我想用DoCmd.TransferText acImportDelim將臨時文件導入到Access中。

+0

+1這種方法實際上是我的第一個想法。管理臨時文件帶有自己的一套開銷,但程序員的意圖會更明確,而不需要好的評論。我以六個半的方式看到它。 – mwolfe02 2013-04-30 14:57:29

1

Docmd.TransferText方法是一個很好的選擇,但作爲修改導入規範的替代方法,您可以考慮導入所有內容並在導入後進行一些驗證。

因此,您可以導入整個文件,然後使用刪除查詢從表中刪除數據。

正如在上面的評論中提到的,通過系統表修改規範對於其他人來說可能很棘手,因爲在你的代碼中有一個很好的小評論的刪除查詢可能會起作用。如果需要使用它,則可以將其註釋掉。

相關問題