Tuo tiedot tekstitiedostosta (ADO) VBA: n avulla Microsoft Excelissä

Anonim

Alla olevan menettelyn avulla voidaan saada ADO -tietuejoukko tekstitiedostosta ja täyttää tulos laskentataulukkoon.

Sub GetTextFileData (strSQL As String, strFolder As String, rngTargetCell As Range) 'esimerkki: GetTextFileData "SELECT * FROM filename.txt", _ "C: FolderName", Range ("A3") esimerkki: GetTextFileData "SELECT * FROM tiedostonimi.txt WHERE kentänimi = 'kriteerit' ", _" C: \ FolderName ", alue (" A3 ") Dim cn ADODB.Connection, rs ADODB.Recordset, f Kokonaislukuna Jos rngTargetCell ei ole mitään sitten Poistu alijoukosta cn = Uusi ADODB.Connection On Error Jatka Seuraava cn.Open "Driver = {Microsoft Text Driver ( *.txt; *.csv)};" & _ "Dbq =" & strFolder & ";" & _ "Laajennukset = asc, csv, tab, txt;" On Error GoTo 0 If cn.State adStateOpen then Exit Sub Set rs = New ADODB.Recordset On Error Resume Next rs. = Ei mitään Poistu alipäästä Jos kenttäotsikot ovat f = 0 rs.Fields.Count - 1 rngTargetCell.Offset (0, f) .Formula = rs.Fields (f) .Name Next f rngTargetCell.Offset (1, 0 CopyFromRecordset rs 'toimii Excel 2000: ssa tai uudemmassa' RS2WS rs, rngTargetCell 'toimii Excel 97: ssä tai aiemmassa rs.Close Set rs = Nothing cn

Menettelyä voidaan käyttää seuraavasti:

Sub TestGetTextFileData () Application.ScreenUpdating = False Workbooks.Add GetTextFileData "SELECT * FROM filename.txt", "C: \ FolderName", Range ("A3") 'GetTextFileData "SELECT * FROM filename.txt WHERE kentänimi =' kriteerit ' ", _" C: \ FolderName ", Range (" A3 ") sarakkeet (" A: IV "). AutoFit ActiveWorkbook.Saved = True End Sub

Korvaa tiedostonimi.txt sen tekstitiedoston nimellä, josta haluat saada tietoja.
Korvaa C: \ FolderName sen kansion nimellä, johon tekstitiedosto on tallennettu.

Tekstitiedoston ensimmäistä riviä käytetään sarakkeiden otsikoina/kenttien niminä.
Kukin datwa -sarake on erotettava alueellisella luettelomerkkimerkillä
asetukset ohjauspaneelissa. I Norja on yleensä puolipiste (;), muissa maissa tämä voi olla pilkku (,).
Löydät menettelyn RS2WS napsauttamalla tätä linkkiä.

Makroesimerkki olettaa, että VBA -projektisi on lisännyt viittauksen ADO -objektikirjastoon.
Voit tehdä tämän VBE: stä valitsemalla valikon Työkalut, Viitteet ja Microsoft
ActiveX -tietoobjektit x.x -objektikirjasto.