Microsoft Excel'de VBA kullanarak bir metin dosyasından (ADO) verileri içe aktarın

Anonim

Aşağıdaki prosedür, bir metin dosyasından bir ADO kayıt kümesi almak ve sonucu bir çalışma sayfasına doldurmak için kullanılabilir.

Sub GetTextFileData(strSQL As String, strFolder As Range, rngTargetCell As Range) ' örnek: GetTextFileData "SELECT * FROM filename.txt", _ "C:\FolderName", Range("A3") ' örnek: GetTextFileData "SELECT * FROM filename.txt NEREDE alanadı = 'kriter'", _ "C:\KlasörAdı", Aralık("A3") Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer Eğer rngTargetCell Hiçbir Şey Değilse Sonra Exit Sub Set cn = Yeni ADODB.Connection On Hata Devam Et Sonraki cn.Open "Sürücü={Microsoft Metin Sürücüsü (*.txt; *.csv)};" & _ "Dbq=" & strKlasör & ";" & _ "Uzantılar=artan,csv,tab,txt;" Hatada 0'a Git cn.State adStateOpen Sonra Çık Alt Küme rs = Yeni ADODB.Recordset On Hata Devam Et Sonraki rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText Hata Açık 0 GoTo 0 If rs.State adStateOpen Sonra cn.Close = Nothing Exit Sub End If ' alan başlıkları için f = 0 To rs.Fields.Count - 1 rngTargetCell.Offset(0, f).Formula = rs.Fields(f).Name Sonraki f rngTargetCell.Offset(1, 0 .CopyFromRecordset rs ' Excel 2000 veya sonraki sürümlerde çalışır 'RS2WS rs, rngTargetCell' Excel 97 veya önceki sürümlerde çalışır rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub

Prosedür şu şekilde kullanılabilir:

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

filename.txt dosyasını veri almak istediğiniz metin dosyasının adıyla değiştirin.
Metin dosyasının kaydedildiği klasörün adıyla C:\FolderName değiştirin.

Metin dosyasındaki ilk satır, sütun başlıkları/alan adları olarak kullanılacaktır.
Datwa içeren her sütun, bölgesel olarak kullanılan liste ayırıcı karakterle ayrılmalıdır.
Denetim Masası'ndaki ayarlar. I Norveç'te bu genellikle noktalı virgüldür (;), diğer ülkelerde virgül (,) olabilir.
Bu bağlantıya tıklayarak RS2WS prosedürünü bulacaksınız.

Makro örneği, VBA projenizin ADO nesne kitaplığına bir başvuru eklediğini varsayar.
Bunu, Araçlar, Referanslar menüsünü seçip Microsoft'u seçerek VBE içinden yapabilirsiniz.
ActiveX Veri Nesneleri x.x Nesne Kitaplığı.