Macros y Archivos Texto

2
En cualquier módulo del proyecto VBA actual insertarías el siguiente procedimiento: ' ' Importa un archivo de texto delimitado al rango ' especificado de una hoja de cálculo. ' ' Autor: Enrique Martínez Montejo - 2011 ' Public Sub ImportarArchivoTextoDelimitado( _ ByVal rango As Excel.Range, _ ByVal nombreArchivo As String, _ Optional ByVal caracterDelimitadorCampos As String = ",") ' Verificamos los parámetros pasados al procedimiento ' If (rango Is Nothing) Then _ Err.Raise 91, _ "Importar archivo de texto", _ "El rango no es válido." If (nombreArchivo = "") Then _ Err.Raise 1, _ "Importar archivo de texto", _ "No se ha especificado un nombre de archivo." On Error GoTo ErrorImportarArchivoTextoDelimitado ' Referenciamos la hoja de cálculo a la ' que pertenece el rango especificado. ' Dim ws As Excel.Worksheet Set ws = rango.Worksheet Dim table As Excel.QueryTable Set table = ws.QueryTables.Add( _ "TEXT;" & nombreArchivo, ws.Cells(1, 1)) With table .TextFileOtherDelimiter = caracterDelimitadorCampos .Refresh False End With Set table = Nothing Set ws = Nothing Exit Sub ErrorImportarArchivoTextoDelimitado: ' Devolvemos el error al procedimiento llamador Err.Raise Err.Number

Transcript of Macros y Archivos Texto

En cualquier mdulo del proyecto VBA actual insertaras el siguiente procedimiento: ' ' Importa un archivo de texto delimitado al rango ' especificado de una hoja de clculo. ' ' Autor: Enrique Martnez Montejo - 2011 ' Public Sub ImportarArchivoTextoDelimitado( _ ByVal rango As Excel.Range, _ ByVal nombreArchivo As String, _ Optional ByVal caracterDelimitadorCampos As String = ",") ' Verificamos los parmetros pasados al procedimiento ' If (rango Is Nothing) Then _ Err.Raise 91, _ "Importar archivo de texto", _ "El rango no es vlido." If (nombreArchivo = "") Then _ Err.Raise 1, _ "Importar archivo de texto", _ "No se ha especificado un nombre de archivo." On Error GoTo ErrorImportarArchivoTextoDelimitado ' Referenciamos la hoja de clculo a la ' que pertenece el rango especificado. ' Dim ws As Excel.Worksheet Set ws = rango.Worksheet Dim table As Excel.QueryTable Set table = ws.QueryTables.Add( _ "TEXT;" & nombreArchivo, ws.Cells(1, 1)) With table .TextFileOtherDelimiter = caracterDelimitadorCampos .Refresh False End With Set table = Nothing Set ws = Nothing Exit Sub ErrorImportarArchivoTextoDelimitado: ' Devolvemos el error al procedimiento llamador Err.Raise Err.Number End SubSuponiendo que tienes un archivo de texto delimitado por comas, ejecutaras tu macro para que llame al procedimiento 'ImportarArchivoTextDelimitado' de la siguiente manera:Sub Macro1() ' ' Importa un archivo de texto delimitado ' a la celda A1 de la hoja de clculo ' llamada Hoja1. ' On Error GoTo ErrorMacro1 Dim r As Excel.Range Set r = Sheets("Hoja1").Range("A1") Dim fileName As String fileName = "C:\Mis documentos\Archivo.txt" ImportarArchivoTextoDelimitado r, fileName

Exit Sub ErrorMacro1: MsgBox Err.Description, vbExclamation, "Importar Archivo" End SubSi el archivo de texto tiene otro carcter delimitador de campos, como por ejemplo el punto y coma (;), tendras que especificar explcitamente dicho carcter a la hora de llamar al procedimiento 'ImportarArchivoTextDelimitado': ImportarArchivoTextoDelimitado r, fileName, ";"Eso es todo! Adapta el ejemplo a tus necesidades. Para ms informacin, consulta en la ayuda de Excel el objeto QueryTable