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" ดังที่แสดงในภาพหน้าจอต่อไปนี้
เนื้อหาของไฟล์จะแสดงในภาพหน้าจอต่อไปนี้