VBA lasāms teksta fails (lasīšana, parsēšana un importēšana)

Šī apmācība parādīs, kā lasīt saturu no teksta failiem un ielīmēt to darblapās, izmantojot VBA.

Lasiet teksta faila saturu darblapā

Vienkāršākais teksta faila satura lasīšanas veids ir kopēt to darblapas šūnā.

123456789101112 Sub FSOPasteTextFileContent ()Dim FSO kā jauns FileSystemObjectIestatīt FSO = CreateObject ("Scripting.FileSystemObject")Iestatiet FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) "pievienojiet šeit teksta faila ceļuTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1). Range ("A1"). Value = TextString 'varat norādīt darblapu un šūnu, kur ielīmēt teksta faila saturuBeigu apakš

Iepriekš minētais kods izmanto FileSystemObject. Lai to izmantotu, jums būs jāiestata atsauce uz VB skripta izpildes laika bibliotēku. Plašāku informāciju skatiet šeit.

Neizmantojot FileSystemObject, jūs varat ielīmēt teksta faila saturu ar zemāk redzamo kodu. Ja jūsu teksta failā ir rindu atdalītājs, tas tiks ielīmēts pa rindām.

123456789101112 Sub PasteTextFileContent ()Dim wbExcel kā darbgrāmata, wbText kā darbgrāmataDim wsExcel kā darblapaSet wbExcel = ThisWorkbook "šeit norādiet, kurā Excel failā teksta faila saturs tiks ielīmētsIestatiet wsExcel = wbExcel.Sheets (1) 'šeit norādiet, kuru darblapu izmantotIestatiet wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'pievienojiet šeit sava teksta faila ceļuwbText.Sheets (1). Šūnas. Kopēt wsExcel.CellswbText.Close SaveChanges: = NepareiziBeigu apakš

Izlasiet teksta faila saturu pa rindām, kolonnas pēc kolonnas

Jūsu teksta failā var būt vairākas rindas un vairāki elementi, kas uzskaitīti rindās, atdalot tos ar komatu, semikolu, cilni, atstarpi utt.… Lai pareizi izlasītu un ielīmētu teksta faila saturu, jums var būt nepieciešams šis kods:

1234567891011121314151617181920212223242526 Sub PasteTextFileContentWithSeparators ()Dim StrLine kā virkneDim FSO kā jauns FileSystemObjectAptumšot PSO kā objektuDim StrLineElements kā variantsDim indekss tik garšDim un tik ilgiAptumšot norobežotāju kā virkniIestatīt FSO = CreateObject ("Scripting.FileSystemObject")Iestatīt TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Atdalītājs = "," 'norobežotājs, kas tiek izmantots jūsu teksta failāIndekss = 1Darīt, kamēr TSO.AtEndOfStream = NepareiziStrLine = TSO.ReadLineStrLineElements = Split (StrLine, Delimiter)Attiecībā uz i = LBound (StrLineElements) līdz UBound (StrLineElements)Šūnas (indekss, i + 1). Vērtība = StrLineElements (i) ”šis kods sāks ielīmēt teksta faila saturu no aktīvās darblapas A1 (šūna (1,1)) šūnasTālāk iIndekss = indekss + 1CilpaPSO. AizvērtBeigu apakš

Atdalītājs, ko izmanto jūsu teksta failā, var būt komats (“,”), komats ar atstarpi (“,“), semikols (“;”), semikols ar atstarpi (“;”), atstarpe (““), cilne (mainiet pēc tam Atdalītājs = vbTab) vai retos gadījumos jebkuru citu rakstzīmi.

Lasiet teksta failus masīvos

Ja jums ir jālasa sava teksta faila saturs masīvā un ielīmējiet darblapā rindu pēc rindas, kolonna pēc kolonnas, jums būs nepieciešams šāds kods:

12345678910111213141516171819202122232425262728293031323334 Sub ReadDelimitedTextFileIntoArray ()Aptumšot norobežotāju kā virkniDim teksta fails kā vesels skaitlisAptumšojiet FilePath kā ​​virkniAptumšojiet FileContent kā virkniDim LineArray () kā virkneDim DataArray () kā virkneDim TempArray () kā virkneDim rw cik ilgi, kol tik ilgiAtdalītājs = vbTab 'norobežotājs, kas tiek izmantots jūsu teksta failāFilePath = "C: \ Test \ TestFileTab.txt"rw = 1Teksta fails = FreeFileAtveriet FilePath ievadīšanai kā TextFileFileContent = Ievadi (LOF (TextFile), TextFile)Aizveriet TextFileLineArray () = Split (FileContent, vbNewLine) 'mainīt vbNewLine uz vbCrLf vai vbLf atkarībā no teksta failā izmantotā rindu atdalītājaX = LBound (LineArray) līdz UBound (LineArray)Ja Len (Apgriezt (LineArray (x))) 0 TadTempArray = Split (LineArray (x), Delimiter)col = UBound (TempArray)ReDim Preserve DataArray (kols, rw)Ja y = LBound (TempArray) līdz UBound (TempArray)DataArray (y, rw) = TempArray (y)Šūnas (x + 1, y + 1). Vērtība = DataArray (y, rw) 'šis kods sāks ielīmēt teksta faila saturu no aktīvās darblapas A1 (šūna (1,1)) šūnasNākamais gBeigas Jarw = rw + 1Nākamais xBeigu apakš

Rindu atdalītāji jūsu teksta failā var būt ratiņu atgriešanās un rindas plūsmas kombinācija (Chr (13)+Chr (10)) vai linefeed (Chr (10)). Attiecīgi izmantojiet vbCrLf vai vbLf. Ja neesat pārliecināts, izmantojiet vbNewLine, lai norādītu līniju atdalītāju.

wave wave wave wave wave