VBA - ไฟล์ข้อความ

คุณยังสามารถอ่านไฟล์ Excel และเขียนเนื้อหาของเซลล์ลงในไฟล์ข้อความโดยใช้ VBA VBA ช่วยให้ผู้ใช้สามารถทำงานกับไฟล์ข้อความโดยใช้สองวิธี -

  • วัตถุระบบไฟล์
  • โดยใช้คำสั่งเขียน

วัตถุระบบไฟล์ (FSO)

ตามชื่อที่แนะนำ FSO ช่วยให้นักพัฒนาทำงานกับไดรฟ์โฟลเดอร์และไฟล์ ในส่วนนี้เราจะพูดถึงวิธีการใช้ FSO

ซีเนียร์ ประเภทวัตถุและคำอธิบาย
1

Drive

ไดรฟ์คือวัตถุ มีวิธีการและคุณสมบัติที่ช่วยให้คุณรวบรวมข้อมูลเกี่ยวกับไดรฟ์ที่เชื่อมต่อกับระบบ

2

Drives

ไดรฟ์คือคอลเล็กชัน มีรายการไดรฟ์ที่เชื่อมต่อกับระบบทั้งทางกายภาพหรือทางตรรกะ

3

File

ไฟล์เป็นวัตถุ ประกอบด้วยวิธีการและคุณสมบัติที่อนุญาตให้นักพัฒนาสร้างลบหรือย้ายไฟล์

4

Files

ไฟล์คือคอลเล็กชัน มีรายการไฟล์ทั้งหมดที่อยู่ในโฟลเดอร์

5

Folder

โฟลเดอร์คือวัตถุ มีวิธีการและคุณสมบัติที่อนุญาตให้นักพัฒนาสร้างลบหรือย้ายโฟลเดอร์

6

Folders

โฟลเดอร์คือคอลเล็กชัน มีรายชื่อโฟลเดอร์ทั้งหมดภายในโฟลเดอร์

7

TextStream

TextStream เป็น Object ช่วยให้นักพัฒนาสามารถอ่านและเขียนไฟล์ข้อความ

ไดรฟ์

Driveเป็นวัตถุที่ให้การเข้าถึงคุณสมบัติของดิสก์ไดรฟ์หรือเครือข่ายที่ใช้ร่วมกัน คุณสมบัติต่อไปนี้ได้รับการสนับสนุนโดยDrive วัตถุ -

  • AvailableSpace
  • DriveLetter
  • DriveType
  • FileSystem
  • FreeSpace
  • IsReady
  • Path
  • RootFolder
  • SerialNumber
  • ShareName
  • TotalSize
  • VolumeName

ตัวอย่าง

Step 1- ก่อนดำเนินการเขียนสคริปต์โดยใช้ FSO เราควรเปิดใช้งาน Microsoft Scripting Runtime ในการทำเช่นเดียวกันให้ไปที่ Tools → References ดังแสดงในภาพหน้าจอต่อไปนี้

Step 2 - เพิ่ม "Microsoft Scripting RunTime" แล้วคลิกตกลง

Step 3 - เพิ่มข้อมูลที่คุณต้องการเขียนในไฟล์ข้อความและเพิ่มปุ่มคำสั่ง

Step 4 - ตอนนี้ถึงเวลาที่จะสคริปต์

Private Sub fn_write_to_text_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
  
   Dim fso As FileSystemObject
   Set fso = New FileSystemObject
   Dim stream As TextStream
  
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count
    
   ' Create a TextStream.
   Set stream = fso.OpenTextFile("D:\Try\Support.log", ForWriting, True)
  
   CellData = ""
  
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = Trim(ActiveCell(i, j).Value)
         stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData
      Next j
   Next i
  
   stream.Close
   MsgBox ("Job Done")
End Sub

เอาต์พุต

เมื่อเรียกใช้สคริปต์ตรวจสอบให้แน่ใจว่าคุณวางเคอร์เซอร์ไว้ในเซลล์แรกของแผ่นงาน ไฟล์ Support.log ถูกสร้างขึ้นตามที่แสดงในภาพหน้าจอต่อไปนี้ภายใต้ "D: \ Try"

เนื้อหาของไฟล์จะแสดงในภาพหน้าจอต่อไปนี้

เขียนคำสั่ง

ไม่เหมือน FSO เราไม่จำเป็นต้องเพิ่มการอ้างอิงใด ๆ อย่างไรก็ตามเราจะไม่สามารถทำงานกับไดรฟ์ไฟล์และโฟลเดอร์ได้ เราจะทำได้เพียงแค่เพิ่มสตรีมลงในไฟล์ข้อความ

ตัวอย่าง

Private Sub fn_write_to_text_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
  
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count
    
   FilePath = "D:\Try\write.txt"
   Open FilePath For Output As #2
  
   CellData = ""
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value)
         Write #2, CellData
      Next j
   Next i
  
   Close #2
   MsgBox ("Job Done")
End Sub

เอาต์พุต

เมื่อเรียกใช้สคริปต์ไฟล์ "write.txt" จะถูกสร้างขึ้นในตำแหน่ง "D: \ Try" ดังที่แสดงในภาพหน้าจอต่อไปนี้

เนื้อหาของไฟล์จะแสดงในภาพหน้าจอต่อไปนี้