Snažím sa automatizovať pridávanie nových súborov txt, ktoré majú rovnaké (známe) rozloženie.
Stĺpce sú oddelené pomocou záložiek (tlačidlo TAB). Je možné urobiť to vo VBA ako v Sprievodcovi prístupom na import textových súborov?
Používam DoCmd.TransferText
metóda vo VBA
odpovede:
11 pre odpoveď č. 1Aby ste mohli urobiť, budete musieť raz prejsť sprievodcomsúbor špecifikácií. Ak to chcete importovať ako textový súbor, ako je obvyklé, ale skôr ako sa dostanete do sprievodcu, kliknite vľavo dole na tlačidlo „Rozšírené ...“. Na tomto mieste vytvoríte súbor so špecifikáciou.
Skontrolujte, či tieto stĺpce zodpovedajú vášmu vstupnému súboru, dátovým typom a všetkým. Nezabudnite vybrať {tab}
oddeľovač polí a príslušný textový kvalifikátor, ak ho používate.
Uložte špecifikáciu (ktorú môžete neskôr upraviť tak, že sa vrátite na tú istú obrazovku a kliknete na tlačidlo Specs...
potom uložte na starú)
Teraz môžete použiť vo VBA, ako je tento
DoCmd.TransferText acImportDelim, "your spec name", "destination table name", sourceFilePath
Existuje parameter HasFieldNames
že sa musíte rozhodnúť, či je true
alebo false
na základe vášho súboru.
2 pre odpoveď č. 2
V sprievodcovi importom je nevýhodou to, že aj pri najmenších zmenách vo formáte súboru musíte kliknúť na všetky tieto kroky. ešte raz aby fungoval import.
Pozrite sa na @Remouovu odpoveď ms Prístup k tabuľke importu zo súboru v dotaze pre spôsob, ako to urobiť v priamom SQL. Vlastne používam rovnakú metódu aj v mojom projekte. Používam niečo také (podrobnosti nájdete v mojom odkaze):
insert into MyTable (column-list...)
select (column-list...)
from [data-source-specifications].[file-name]
any-other-clauses...;
Iba jedna výhrada. Ak vložíte túto syntax SQL do normálneho objektu dotazu programu Access, existuje veľká šanca, že program Access ho upraví do bodu, v ktorom vyhral, dokonca nebude môcť objekt dotazu otvoriť. Zostavte a uložte dotaz do textového súboru, kým ho vyskúšate v programe Access. Po otestovaní a funkčnosti dotazu ho uložte do podprogramu VBA, aby ho program Access spustil presne tak, ako je:
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