Selektivt Importere Records

February 4  by Eliza

Ole kjørte inn i et problem å importere informasjon i en Excel-arbeidsbok. Det virker som de filene han trenger å importere vanligvis har tusenvis av poster i dem. Ole trenger ikke de fleste av inngangs rader, imidlertid, og normalt blir kvitt dem en gang postene importeres til Excel. Ole er på utkikk etter en måte å bli kvitt de uønskede poster under importprosessen, slik at han har mindre arbeid å gjøre når dataene er i sin arbeidsbok.

Det finnes et par forskjellige måter som en løsning på dette problemet kan bli kontaktet. En løsning er å bruke Access som din første import trinn. Tilgang vil lett håndtere tusenvis av poster du vil importere, selv om det er flere poster enn hva du kan importere inn i Excel. Du kan importere filen til Access, filtrere ut uønskede poster, og deretter eksportere den resulterende tabellen som en Excel-arbeidsbok.

Den beste løsningen, men det kan være å omgå Excel importfiltre helt. Du kan enkelt skrive en import rutine i VBA, og tillate det å behandle importfilen. For eksempel vurdere følgende makro:

Sub Import ()
Dim sFile As String
Dim sUnwanted As String
Dim sDelim As String
Dim iRow As Integer
Dim iCol As Integer
Dim bBadRecord Som boolsk
Dim iTemp As Integer

sFile = "d: \ data.txt"
sUnwanted = "dårlig tekst"
sDelim = ","

Åpne sFile For Input Som # 1

iRow = 1
Mens Not EOF (1) 'Scan fil linje for linje
iCol = 1
Linje inn # 1, sBuffer

'Sjekk om bør ignorere rekord
bBadRecord = Instr (sBuffer, sUnwanted)

Hvis ikke bBadRecord Deretter
iTemp = Instr (sBuffer, sDelim)
Mens iTemp> 0
Med Application.Cells (iRow, iCol)
.NumberFormat = "@" 'Tekst formatering
.Value = Left (sBuffer, iTemp-1)
Avslutt med
iCol = iCol + 1
sBuffer = Mid (sBuffer, iTemp + 1, Len (sBuffer))
iTemp = Instr (sBuffer, sDelim)
Wend
Hvis Len (sBuffer)> 0 Then
Med Application.Cells (iRow, iCol)
.NumberFormat = "@" 'Tekst formatering
.Value = SBuffer
Avslutt med
End If
iRow = iRow + 1
End If
Wend
Lukk # 1
End Sub

Denne makroen åpner en datafil og leser hver post i filen. Den kontrollerer posten for å sørge for at det er OK å importere, og deretter trekker rekord fra hverandre, basert på et skilletegn, og stapper den informasjonen inn i gjeldende regneark. Du kan endre navnet på datafilen (den sFile variabel), teksten som indikerer en dårlig plate (sUnwanted variabel) og skilletegn (sDelim variabel).

Som et eksempel, la oss anta at du har en datafil som heter Customers.txt. Denne filen inneholder alle dine kunderegistre, men du ønsker ikke å importere postene for kunder med adresser inne i USA. Videre postene i datafilen bruke en fane mellom hvert felt. I dette tilfellet ville du bare trenger å gjøre følgende endringer i variablene i begynnelsen av makroen:

sFile = "d: \ Customers.txt"
sUnwanted = "United States"
sDelim = Chr (9)

Når du kjører makroen, inneholder den gjeldende regneark bare de ønskede data.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (2239) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Selektivt Importere Records.