/ / แฟ้มในไดเรกทอรีใน Excel VBA

แฟ้มในไดเรกทอรีใน Excel VBA

ด้านล่างเราจะดูที่โปรแกรมมา Excel VBA ที่ ลูปผ่านเวิร์กบุคและเวิร์กชีททั้งหมด ใน ไดเรกทอรีและแสดงชื่อทั้งหมด

ดาวน์โหลด Book1.xls, Book2.xls, Book3.xls, Book4.xls และ Book5.xls และเพิ่มลงใน "C: test"

สถานการณ์:

ไฟล์ในตัวอย่างไดเรกทอรี

เพิ่มบรรทัดรหัสต่อไปนี้ลงในปุ่มคำสั่ง:

1. ขั้นแรกเราจะประกาศตัวแปรสองประเภทคือ String, Worksheet object และตัวแปรสองตัวแปร Type Integer

Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer

2. เพื่อไม่ให้หน้าจอกะพริบปิดการอัพเดตหน้าจอ

Application.ScreenUpdating = False

3. เริ่มต้นไดเร็กทอรีตัวแปร เราใช้ฟังก์ชัน Dir เพื่อค้นหา * .xl แรก? ไฟล์ที่เก็บไว้ในไดเรกทอรีนี้

directory = "c:test"
fileName = Dir(directory & "*.xl??")

หมายเหตุ: ฟังก์ชัน Dir สนับสนุนการใช้อักขระตัวแทนหลายตัว (*) และตัวอักขระเดี่ยว (?) เพื่อค้นหาไฟล์ Excel ชนิดต่างๆทั้งหมด

4. ชื่อไฟล์ตัวแปรจะเก็บชื่อของไฟล์ Excel ตัวแรกที่พบในไดเร็กทอรี เพิ่ม Do While Loop

Do While fileName <> ""

Loop

เพิ่มบรรทัดรหัสต่อไปนี้ (ที่ 5, 6, 7, 8 และ 9) ลงในลูป

5. เริ่มต้นตัวแปร Type Integer และเพิ่มชื่อของไฟล์ Excel ลงในคอลัมน์แรกของแถว i

i = i + 1
j = 2
Cells(i, 1) = fileName

6. ไม่มีวิธีง่ายๆในการดึงข้อมูล (หรือชื่อแผ่นงาน) ออกจากไฟล์ Excel ที่ปิดอยู่ ดังนั้นเราจึงเปิดไฟล์ Excel

Workbooks.Open (directory & fileName)

7. เพิ่มชื่อแผ่นงานทั้งหมดของไฟล์ Excel ลงในคอลัมน์อื่น ๆ ของแถว i

For Each sheet In Workbooks(fileName).Worksheets
    Workbooks("files-in-a-directory.xls").Worksheets(1).Cells(i, j).Value = sheet.Name
    j = j + 1
Next sheet

8. ปิดไฟล์ Excel

Workbooks(fileName).Close

9. ฟังก์ชัน Dir เป็นฟังก์ชันพิเศษ หากต้องการรับไฟล์ Excel อื่น ๆ คุณสามารถใช้ฟังก์ชัน Dir อีกครั้งโดยไม่มีอาร์กิวเมนต์

fileName = Dir()

หมายเหตุ: เมื่อไม่มีชื่อไฟล์ที่ตรงกันมากขึ้นฟังก์ชัน Dir จะส่งกลับสตริงที่มีความยาวเป็นศูนย์ ("") เป็นผลให้ Excel VBA จะออกจากวนรอบ Do While

10. เปิดหน้าจออีกครั้ง (นอกวง)

Application.ScreenUpdating = True

11. ทดสอบโปรแกรม

ผล:

แฟ้มในไดเรกทอรีใน Excel VBA

อ่านเพิ่มเติมได้ที่: