El siguiente procedimiento se puede utilizar para obtener un conjunto de registros ADO de un archivo de texto y completar el resultado en una hoja de trabajo.
Sub GetTextFileData (strSQL As String, strFolder As String, rngTargetCell As Range) 'ejemplo: GetTextFileData "SELECT * FROM filename.txt", _ "C: \ FolderName", Range ("A3")' ejemplo: GetTextFileData "SELECT * FROM filename.txt WHERE fieldname = 'criteria' ", _" C: \ FolderName ", Range (" A3 ") Dim cn As ADODB.Connection, rs As ADODB.Recordset, f As Integer Si rngTargetCell no es nada, entonces salga del subconjunto cn = Nuevo ADODB. Conexión en caso de error Reanudar Siguiente cn.Open "Driver = {Microsoft Text Driver (* .txt; * .csv)};" & _ "Dbq =" & strFolder & ";" & _ "Extensiones = asc, csv, tab, txt;" En caso de error Ir a 0 Si cn.State adStateOpen Luego salir del subconjunto rs = New ADODB.Recordset En caso de error Reanudar Siguiente rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly, adCmdText En error Ir a 0 Si rs.State adStateOpen Luego cn.Close Establecer cn = Nothing Exit Sub End If 'los encabezados de campo For f = 0 To rs.Fields.Count - 1 rngTargetCell.Offset (0, f) .Formula = rs.Fields (f) .Name Next f rngTargetCell.Offset (1, 0 ) .CopyFromRecordset rs 'funciona en Excel 2000 o posterior' RS2WS rs, rngTargetCell 'funciona en Excel 97 o anterior rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
El procedimiento se puede utilizar así:
Sub TestGetTextFileData () Application.ScreenUpdating = False Workbooks.Add GetTextFileData "SELECT * FROM filename.txt", "C: \ FolderName", Range ("A3") 'GetTextFileData "SELECT * FROM filename.txt DONDE fieldname =' criterio ' ", _" C: \ FolderName ", Rango (" A3 ") Columnas (" A: IV "). AutoFit ActiveWorkbook.Saved = True End Sub
Reemplace filename.txt con el nombre del archivo de texto del que desea obtener los datos.
Reemplace C: \ FolderName con el nombre de la carpeta donde se guarda el archivo de texto.
La primera fila del archivo de texto se utilizará como encabezados de columna / nombres de campo.
Cada columna con datwa debe separarse con el carácter separador de lista que se utiliza en la
configuración en el Panel de control. En Noruega, esto suele ser punto y coma (;), en otros países puede ser una coma (,).
Encontrará el procedimiento RS2WS haciendo clic en este enlace.
El ejemplo de macro asume que su proyecto de VBA ha agregado una referencia a la biblioteca de objetos ADO.
Puede hacer esto desde dentro del VBE seleccionando el menú Herramientas, Referencias y seleccionando Microsoft
Biblioteca de objetos ActiveX Data Objects x.x.