Цей підручник покаже, як читати вміст із текстових файлів та вставляти його у робочі листи за допомогою VBA.
Прочитайте вміст текстового файлу на робочому аркуші
Найпростіший спосіб читання вмісту текстового файлу - скопіювати його у клітинку робочого аркуша.
123456789101112 | Sub FSOPasteTextFileContent ()Затемнити FSO як новий FileSystemObjectВстановити FSO = CreateObject ("Scripting.FileSystemObject")Встановити 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 As VariantІндекс затемнення як довгоDim i As LongРозгалужувач у вигляді рядкаВстановити FSO = CreateObject ("Scripting.FileSystemObject")Встановіть TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Розмежувач = "," 'роздільник, який використовується у текстовому файліІндекс = 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 |
Розмежувач, який використовується у текстовому файлі, може бути комою (“,”), комою з пробілом (“,”), крапкою з комою (“;”), крапкою з комою з пробілом (“;”), пробілом (““), табуляцією (змініть тоді Розмежувач = vbTab) або в рідкісних випадках будь -який інший символ.
Читання текстових файлів у масивах
Якщо вам потрібно прочитати вміст вашого текстового файлу в масив і вставити рядок за рядком, стовпець за стовпцем у ваш аркуш, вам знадобиться цей код нижче:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray ()Розгалужувач як рядокЗатемнити текстовий файл як ціле числоЗатемнити FilePath як рядокDim FileContent As StringDim LineArray () як рядокDim DataArray () як рядокDim TempArray () як рядокDim rw As Long, col As LongРозмежувач = 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 = Розділити (LineArray (x), роздільник)col = UBound (TempArray)ReDim Preserve DataArray (col, 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 для позначення роздільника рядків.