Ole tuvo un problema al importar información a un libro de Excel. Parece que los archivos que necesita importar son archivos de texto que normalmente contienen miles y miles de registros. Sin embargo, Ole no necesita la mayoría de las filas de entrada y normalmente las elimina una vez que los registros se importan a Excel. Ole está buscando una forma de deshacerse de los registros no deseados durante el proceso de importación, para que tenga menos trabajo que hacer cuando los datos estén en su libro de trabajo.

Hay un par de formas diferentes de abordar la solución a este problema. Una solución es utilizar Access como primer paso de importación. Access manejará fácilmente los miles de registros que desea importar, incluso si hay más registros de los que puede importar a Excel. Puede importar el archivo a Access, filtrar los registros no deseados y luego exportar la tabla resultante como un libro de Excel.

Sin embargo, la mejor solución puede ser omitir por completo los filtros de importación de Excel. Esto funciona muy bien si sus datos de importación, como los de Ole, están en un archivo de texto. Puede escribir fácilmente una rutina de importación en VBA y permitirle procesar el archivo de importación. Por ejemplo, considere la siguiente macro:

Sub Import()

Dim sFile As String     Dim sUnwanted As String     Dim sDelim As String     Dim iRow As Integer     Dim iCol As Integer     Dim bBadRecord As Boolean     Dim iTemp As Integer

sFile = "d:\data.txt"

sUnwanted = "bad text"

sDelim = ","



Open sFile For Input As #1

iRow = 1     While Not EOF(1) 'Scan file line by line         iCol = 1         Line Input #1, sBuffer

' Check to see if should ignore record         bBadRecord = Instr(sBuffer, sUnwanted)



If Not bBadRecord Then             iTemp = Instr(sBuffer, sDelim)

While iTemp > 0                 With Application.Cells(iRow, iCol)

.NumberFormat = "@" 'Text formatting                     .Value = Left(sBuffer, iTemp-1)

End With                 iCol = iCol + 1                 sBuffer = Mid(sBuffer, iTemp+1, Len(sBuffer))

iTemp = Instr(sBuffer, sDelim)

Wend             If Len(sBuffer) > 0 Then                 With Application.Cells(iRow, iCol)

.NumberFormat = "@" 'Text formatting                     .Value = sBuffer                 End With             End If             iRow = iRow + 1         End If     Wend     Close #1 End Sub

Esta macro abre un archivo de datos y lee cada registro del archivo. Comprueba el registro para asegurarse de que se puede importar y luego lo separa, basándose en un delimitador, y rellena la información en la hoja de trabajo actual. Puede cambiar el nombre del archivo de datos (la variable sFile), el texto que indica un registro incorrecto (variable sUnwanted) y el delimitador (variable sDelim).

Como ejemplo, supongamos que tiene un archivo de datos llamado Clientes.txt. Este archivo contiene todos sus registros de clientes, pero no desea importar los registros de clientes con direcciones dentro de los Estados Unidos. Además, los registros en el archivo de datos utilizan un carácter de tabulación entre cada campo. En este caso, solo necesitaría realizar los siguientes cambios en las variables al comienzo de la macro:

sFile = "d:\Customers.txt"

sUnwanted = "United States"

sDelim = Chr(9)

Una vez que ejecuta la macro, la hoja de trabajo actual contiene solo los datos deseados.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (8491) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Selectively_Importing_Records [Importación selectiva de registros].