V rámci našej pokračujúcej série článkov o importovaní údajov do MS Access sa budeme venovať ďalšiemu spoločnému aspektu prípravy súboru na import - konkrétne, čo robíte, keď máte súbory na import, ktoré majú riadky hlavičky alebo päty s číslami stránok na nich? Aj keď je to bežné, program MS Access nemá zabudovanú metódu na manipuláciu s týmito súbormi, takže vám tradične zostáva na predbežné spracovanie súborov pred ich importom použiť nástroje na spracovanie textu, ako je Monarch Pro. Čo však v prípade, že k týmto nástrojom nemáte prístup? Alebo nechcete ďalšiu komplikáciu údržby ďalšieho softvérového balíka? V tomto článku vám ukážeme, ako pomocou malého súboru VBA môžete tieto typy riadkov zo súboru odstrániť skôr, ako starVáš import.
Príklad - odstránenie päty alebo hlavičky stránky pred importom súboru
V tomto článku použijeme pre svoj príklad veľmi častú situáciu - konkrétne máme súbor, ktorý obsahuje text päty s číslom stránky. Prirodzene sa nechceme pokúsiť importovať tieto riadky do našej tabuľky, pretože nebudú v správnom formáte, takže čo musíme urobiť, je odstrániť všetky tieto riadky zo súboru pred tým, ako ich naimportujeme. Predtým, ako sa zasekneme pri spájaní riešenia, nezabudnite, že aj tie najlepšie úmysly na čistenie údajov môžu potenciálne spôsobiť problémy, ak má importovaný súbor nejaké závažné problémy, o ktorých neviete - výsledky importovania poškodený alebo nesprávne naformátovaný súbor by mohol dokonca potenciálne poškodený súbor prístupu - preto si nájdite čas a ubezpečte sa, že viete, čo je potrebné vyčistiť od každého súboru, ktorý importujete, skôr ako začnete!
Prístup
To, ako to urobíme, je celkom jednoduché. Najskôr prečítame celý súbor do reťazca, tento reťazec potom rozdelíme do poľa, ktoré môžeme pretočiť, a nakoniec toto pole pretočíme po riadkoch a napíšeme akýkoľvek riadok okrem tie, ktoré zodpovedajú vzoru, ktorý hľadáme, späť do súboru. Nasledujúci kód vám umožní použiť buď vytvorenie nového vyčisteného súboru, alebo prepísať existujúci súbor zadaním rovnakého názvu súboru pre parametre fileIn aj fileOut.
kód
Sub CleanFile (fileIn As String, fileOut As String, removePattern As String, Optional positionOfText As String = "anywhere") Dim fs As Variant Dim filObj As Variant Dim fileString As String Dim fileArray As Variant Dim doWrite As Boolean 'otvorte súbor na čítanie Nastaviť fs = CreateObject ("Scripting.FileSystemObject") Nastaviť filObj = fs.OpenTextFile (fileIn, 1) 'prečítať celý súbor naraz goString = filObj.readall' a rozdeliť ho do poľa fileArray = Split (fileString, vbNewLine) filObj .Zatvorte 'vytvorte náš výstupný súbor - prepíšte, ak už existuje. Nastaviť filObj = fs.CreateTextFile (fileOut, True) pre každý ln v fileArray doWrite = False' vypíše iba riadok, ak NEMÁ obsahovať hľadaný reťazec. Vyberte Prípad UCase (positionOfText) Prípad "START "Ak je vľavo (Trim (ln), Len (removePattern)) <> removePattern Potom doWrite = True Case" END "Ak je to správne (Trim (ln), Len (removePattern)) <> removePattern Potom doWrite = True Case" KDEKOĽVEK " If InStr (ln, removePattern) = 0 Potom doWrite = True Case Else MsgBox "Bol zadaný neplatný parameter - platné možnosti sú: START, KONIEC alebo KDEKOĽVEK ", vbExclamation," Nesprávny zadaný parameter "Koniec Vyberte Ak doWrite Potom filObj.writeline ln Ďalej Koniec Sub
Vysvetlenie kódu
Aby sme mohli kód použiť v mnohých rôznych situáciách, pridali sme možnosť povedať kde na riadku, ktorý hľadáte text - tj. na konci riadku (napríklad tam sa často nachádza dátum spustenia správy), start riadku (čo môže byť napríklad názov správy alebo číslo stránky) alebo kdekoľvek na riadku. Sekcia „Vybrať prípad“ kódu skontroluje príslušnú pozíciu a ak text, ktorý hľadáme, neexistuje, potom sa riadok nevypíše do nového súboru.
Pomocou kódu
Keď sa vrátime k nášmu príkladu, povedzme, že každá stránka v zostave alebo súbore, ktorú chceme importovať, má pätu, ktorá znie:
Strana 1 z 30
To, čo tu musíme urobiť, je, keď prechádzame jednotlivými riadkami v našom kódovom poli, očividne musíme ignorovať všetky riadky, ktoré stars „Page“ - na s. môžu alebo nemusia byť medzerytart riadku, ale tieto sa odstránia pomocou funkcie Trim () v kóde.
Na odstránenie týchto riadkov z nášho súboru by sme jednoducho použili nasledujúci príkaz:
CleanFile („H: \ Input.txt“, „H: \ Output.txt“, „Stránka“, „START ”)
Po spustení by súbor Output.txt obsahoval všetky riadky okrem päty stránky - čo je presne to, čo chceme.
Úvod autora:
Mitchell Pond je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane oprava SQL Server db a vynikajúce softvérové produkty na obnovenie. Pre viac informácií navštívte www.datanumen. S
Nechaj odpoveď