Този урок ще покаже как да четете съдържание от текстови файлове и да го поставяте в работни листове с VBA.
Прочетете съдържанието на текстовия файл в работен лист
Най -простият начин за четене на съдържанието на текстов файл е да го копирате в клетката на работен лист.
123456789101112 | Sub FSOPasteTextFileContent ()Затъмнете FSO като нов FileSystemObjectЗадайте FSO = CreateObject ("Scripting.FileSystemObject")Set FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'добавете тук пътя на вашия текстов файлTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'можете да посочите работния лист и клетката, където да поставите съдържанието на текстовия файлEnd Sub |
Горният код използва FileSystemObject. За да го използвате, ще трябва да зададете препратка към библиотеката по време на изпълнение на VB скрипта. Вижте тук за повече информация.
Без да използвате FileSystemObject, можете да поставите съдържанието на текстовия си файл с кода по -долу. Ако вашият текстов файл съдържа разделител на редове, той ще бъде поставен ред по ред.
123456789101112 | Sub PasteTextFileContent ()Затъмнете wbExcel като работна книга, wbText като работна книгаЗатъмнете wsExcel като работен листSet wbExcel = ThisWorkbook 'укажете тук в кой Excel файл съдържанието на текстовия файл да бъде поставеноЗадайте wsExcel = wbExcel.Sheets (1) 'посочете тук кой работен лист да използватеЗадайте wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'добавете тук пътя на вашия текстов файлwbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalseEnd Sub |
Прочетете съдържанието на текстовия файл ред по ред, колона по колона
Вашият текстов файл може да има няколко реда и няколко елемента, изброени в редовете, разделени със запетая, точка и запетая, раздел, интервал и т.н … За да прочетете и поставите правилно съдържанието на текстовия файл, може да се нуждаете от този код по -долу:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators ()Dim StrLine As StringЗатъмнете FSO като нов FileSystemObjectDim TSO като обектDim StrLineElements като вариантDim Index As LongDim i As LongDim Delimiter като StringЗадайте FSO = CreateObject ("Scripting.FileSystemObject")Задайте TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Delimiter = "," 'разделителят, който се използва във вашия текстов файлИндекс = 1Do While TSO.AtEndOfStream = FalseStrLine = TSO.ReadLineStrLineElements = Разделяне (StrLine, Delimiter)За i = LBound (StrLineElements) Към UBound (StrLineElements)Клетки (Index, i + 1) .Value = StrLineElements (i) 'този код ще започне да поставя текст на текстовия файл от клетката A1 (клетка (1,1)) на активния работен листСледва iИндекс = Индекс + 1ЦикълTSO.ЗатвориEnd Sub |
Разделителят, който се използва във вашия текстов файл, може да бъде запетая (“,”), запетая с интервал (“,“), точка и запетая (“;”), точка и запетая с интервал (“;“), интервал (““), раздел (променете тогава Delimiter = vbTab) или в редки случаи всеки друг знак.
Четене на текстови файлове в масиви
Ако трябва да прочетете съдържанието на текстовия си файл в масив и да поставите ред по ред, колона по колона във вашия работен лист, ще ви е необходим този код по -долу:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray ()Dim Delimiter As StringDim TextFile As IntegerЗатъмнете FilePath като низDim FileContent As StringDim LineArray () As StringDim DataArray () като низDim TempArray () As StringDim rw As Long, col As LongDelimiter = vbTab 'разделителят, който се използва във вашия текстов файлFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileОтворете FilePath за въвеждане като TextFileFileContent = Въвеждане (LOF (TextFile), TextFile)Затворете TextFileLineArray () = Разделяне (FileContent, vbNewLine) 'променя vbNewLine на vbCrLf или vbLf в зависимост от разделителя на редове, който се използва във вашия текстов файлЗа x = LBound (LineArray) Към UBound (LineArray)Ако Len (Trim (LineArray (x))) 0 ТогаваTempArray = Split (LineArray (x), Delimiter)col = UBound (TempArray)ReDim Preserve DataArray (колона, rw)За y = LBound (TempArray) Към UBound (TempArray)DataArray (y, rw) = TempArray (y)Клетки (x + 1, y + 1). Значение = DataArray (y, rw) 'този код ще започне да поставя текстовия файл от съдържанието на клетката A1 (клетка (1,1)) на активния работен листСледващ yКрай Акоrw = rw + 1Следващ xEnd Sub |
Разделителите на редове във вашия текстов файл могат да бъдат комбинация за връщане на каретка и подаване на редове (Chr (13)+Chr (10)) или подаване на линия (Chr (10)). Използвайте vbCrLf или vbLf, съответно. Ако не сте сигурни, използвайте vbNewLine за посочване на разделителя на редове.