Hướng dẫn này sẽ trình bày cách đọc nội dung từ tệp văn bản và dán vào trang tính bằng VBA.
Đọc nội dung tệp văn bản vào trang tính
Cách đơn giản nhất để đọc nội dung của tệp văn bản là sao chép nó vào ô của trang tính.
123456789101112 | Sub FSOPasteTextFileContent ()Làm mờ FSO dưới dạng FileSystemObject mớiĐặt FSO = CreateObject ("Scripting.FileSystemObject")Đặt FileToRead = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForReading) 'thêm vào đây đường dẫn của tệp văn bản của bạnTextString = FileToRead.ReadAllFileToRead.CloseThisWorkbook.Sheets (1) .Range ("A1"). Value = TextString 'bạn có thể chỉ định trang tính và ô nơi dán nội dung của tệp văn bảnKết thúc Sub |
Đoạn mã trên sử dụng FileSystemObject. Để sử dụng nó, bạn sẽ cần đặt một tham chiếu đến thư viện thời gian chạy tập lệnh VB. Xem ở đây để biết thêm thông tin.
Nếu không sử dụng FileSystemObject, bạn có thể dán nội dung tệp văn bản của mình bằng mã bên dưới. Nếu tệp văn bản của bạn chứa dấu phân cách dòng, nó sẽ được dán từng dòng.
123456789101112 | Sub PasteTextFileContent ()Dim wbExcel As Workbook, wbText As WorkbookDim wsExcel As WorksheetĐặt wbExcel = ThisWorkbook 'chỉ định ở đây tệp Excel nào mà nội dung của tệp văn bản sẽ được dán vàoĐặt wsExcel = wbExcel.Sheets (1) 'chỉ định ở đây trang tính nào sẽ sử dụngĐặt wbText = Workbooks.Open ("C: \ Test \ TestFile.txt") 'thêm vào đây đường dẫn của tệp văn bản của bạnwbText.Sheets (1) .Cells.Copy wsExcel.CellswbText.Close SaveChanges: = FalseKết thúc Sub |
Đọc nội dung tệp văn bản từng dòng, từng cột
Tệp văn bản của bạn có thể có một số hàng và một số phần tử được liệt kê trong các hàng được phân tách bằng dấu phẩy, dấu chấm phẩy, tab, dấu cách, v.v.… Để đọc và dán chính xác nội dung của tệp văn bản, bạn có thể cần mã sau:
1234567891011121314151617181920212223242526 | Sub PasteTextFileContentWithSeparators ()Dim StrLine As StringLàm mờ FSO dưới dạng FileSystemObject mớiLàm mờ TSO dưới dạng Đối tượngDim StrLineElements as VariantChỉ số mờ càng lâuDim i As LongDấu phân cách mờ dưới dạng chuỗiĐặt FSO = CreateObject ("Scripting.FileSystemObject")Đặt TSO = FSO.OpenTextFile ("C: \ Test \ TestFile.txt")Dấu phân cách = "," 'dấu phân cách được sử dụng trong tệp văn bản của bạnChỉ mục = 1Làm trong khi TSO.AtEndOfStream = SaiStrLine = TSO.ReadLineStrLineElements = Tách (StrLine, Dấu phân cách)Đối với i = LBound (StrLineElements) đến UBound (StrLineElements)Các ô (Chỉ mục, i + 1) .Value = StrLineElements (i) 'mã này sẽ bắt đầu dán nội dung của tệp văn bản từ ô A1 (Ô (1,1)) của trang tính đang hoạt độngTiếp theo tôiChỉ mục = Chỉ mục + 1VòngTSO.CloseKết thúc Sub |
Dấu phân cách được sử dụng trong tệp văn bản của bạn có thể là dấu phẩy (“,”), dấu phẩy với dấu cách (“,“), dấu chấm phẩy (“;”), dấu chấm phẩy với dấu cách (“;“), dấu cách (““), tab (sau đó thay đổi Dấu phân cách = vbTab) hoặc trong trường hợp hiếm hoi là bất kỳ ký tự nào khác.
Đọc tệp văn bản thành mảng
Nếu bạn cần đọc nội dung tệp văn bản của mình thành một mảng và dán từng dòng, từng cột vào trang tính của mình, bạn sẽ cần mã này bên dưới:
12345678910111213141516171819202122232425262728293031323334 | Sub ReadDelimitedTextFileIntoArray ()Dấu phân cách mờ dưới dạng chuỗiDim TextFile As IntegerDim FilePath As StringDim FileContent As StringDim LineArray () Dưới dạng chuỗiDim DataArray () Dưới dạng chuỗiDim TempArray () Dưới dạng chuỗiDim rw As Long, col As LongDelimiter = vbTab 'dấu phân cách được sử dụng trong tệp văn bản của bạnFilePath = "C: \ Test \ TestFileTab.txt"rw = 1TextFile = FreeFileMở FilePath để nhập dưới dạng TextFileFileContent = Đầu vào (LOF (TextFile), TextFile)Đóng TextFileLineArray () = Split (FileContent, vbNewLine) 'thay đổi vbNewLine thành vbCrLf hoặc vbLf tùy thuộc vào dấu phân tách dòng được sử dụng trong tệp văn bản của bạnĐối với x = LBound (LineArray) đến UBound (LineArray)If Len (Trim (LineArray (x))) 0 ThìTempArray = Tách (LineArray (x), Dấu phân cách)col = UBound (TempArray)ReDim Bảo tồn DataArray (col, rw)Đối với y = LBound (TempArray) Đến UBound (TempArray)DataArray (y, rw) = TempArray (y)Các ô (x + 1, y + 1) .Value = DataArray (y, rw) 'mã này sẽ bắt đầu dán nội dung của tệp văn bản từ ô A1 (Ô (1,1)) của trang tính đang hoạt độngTiếp theo yKết thúc nếurw = rw + 1Tiếp theo xKết thúc Sub |
Dấu phân cách dòng trong tệp văn bản của bạn có thể là ký tự xuống dòng và kết hợp dòng cấp dữ liệu (Chr (13) + Chr (10)) hoặc dòng cấp dữ liệu (Chr (10)). Sử dụng vbCrLf hoặc vbLf, tương ứng. Nếu bạn không chắc chắn, hãy sử dụng vbNewLine để chỉ ra dấu phân cách dòng.