Online Reference

Home

Microsoft Reference
Knowledge Developer Database Internet Resource Forum
VBA
Input / Output Function
ดาวน์โหลดคู่มือ

Dir Function, Dir$ Function

VBA Function, ฟังก์ชัน Dir ส่งออกค่าเป็นประเภทข้อมูล Variant (String) เพื่อแสดงชื่อไฟล์ ไดเรคทอรี หรือโฟลเดอร์ ที่ตรงกับแบบแผน, คุณลักษณะของไฟล์ หรือชื่อไดร์ฟ
VBA Function, ฟังก์ชัน Dir$ ส่งออกค่าเป็นประเภทข้อมูล String เพื่อแสดงชื่อไฟล์ ไดเรคทอรี หรือโฟลเดอร์ ที่ตรงกับแบบแผน, คุณลักษณะของไฟล์ หรือชื่อไดร์ฟ

ไวยากรณ์

Dir[(pathname [,attributes])]

Dir$[(pathname [,attributes])]

ฟังก์ชัน Dir และ ฟังก์ชัน Dir$ มีไวยากรณ์ของส่วน คือ

อากิวเมนต์ รายละเอียด
pathname บังคับ, เป็น expression ของข้อความที่ระบุโปรแกรมประยุกต์ที่สามารถเข้าร่วมกับ DDE conversation โดยปกติอากิวเมนต์ application เป็นชื่อของไฟล์ .exe (ไม่มีส่วน .exe) สำหรับโปรแกรมประยุกต์บน Microsoft Windows เช่น Microsoft Excel ตัวอย่าง การกำหนดค่าเริ่มต้น DDE conversation กับ Microsoft Excel ให้พิมพ์ Excel เป็นอากิวเมนต์ application
attributes ไม่บังคับ, เป็น expression ของตัวเลขหรือค่าคงที่ ซึ่งแสดงการสรุปประเภทไฟล์ ถ้าไม่กำหนดไฟล์ทั้งหมดที่ตรงกับ pathname จะได้รับการส่งออกค่า

การตั้งค่า

อากิวเมนต์ attributes มีการตั้งค่า คือ

ค่าคงที่ ค่า รายละเอียด
vbNormal 0 ปกติ
vbHidden 1 ซ่อน
vbSystem 4 ไฟล์ system
vbVolumn 8 Volume label, ถ้าระบุ ไฟล์ประเภทอื่นจะไม่พิจารณา
vbDirectory 16 ไดเรคทอรี หรือโฟล์เดอร์

หมายเหตุ

  • ค่าคงที่เหล่านี้เป็นระบุโดย Visual Basic for Application ชื่อเหล่านี้สามารถใช้ในคำสั่งในการหาค่า

ลักษณะการประยุกต์

ฟังก์ชัน Dir สนับสนุนการระบุด้วยอักษรพิเศษ กรณีหลายตัวอักษร ( * ) และอักษรเดี่ยว ( ? )

เมื่อมีการใช้ฟังก์ชัน Dir เป็นครั้งแรก ต้องระบุ pathname หรือมีข้อผิดพลาดเกิดขึ้น ถ้ามีการระบุ attributes ต้องมีการกำหนด pathname

ฟังก์ชัน Dir จะออกชื่อไฟล์แรกที่ตรงกับ pathname ซึ่งการดึงชื่อไฟล์ที่ตรงกับ pathname เพิ่ม ให้เรียกฟังก์ชัน Dir อีกครั้งโดยไม่ต้องมีอากิวเมนต์ ถ้าไม่มีชื่อไฟล์อีกแล้ว ฟังก์ชัน Dir จะส่งออกค่าเป็น zero-length string เมื่อส่งค่าด้วย zero-length string การเรียกใช้ฟังก์ชันต่อไป ต้องระบุ pathname หรือปรากฏค่าผิดพลาด การเปลี่ยน pathname ใหม่โดยไม่ต้องดึงชื่อไฟล์ทั้งหมดใน pathname ปัจจุบัน นอกจากนี้ ฟังก์ชัน Dir ไม่สามารถเรียกใช้แบบ recursive การใช้ vbDirectory เป็น attributes ไม่สามารถส่งค่าแบบต่อเนื่องของไดเรคทอรี่ย่อย

ดูเพิ่มเติม

CurDir Statement, ฟังก์ชัน CurDir

ตัวอย่าง

ตัวอย่างการใช้ฟังก์ชัน Dir ในตรวจสอบไฟล์ที่เก็บไว้ในไดเรคทอรี่ (สำหรับ Macintosh, “HD:” เป็นชื่อเริ่มต้นของ drive และแยก partname ด้วยเครื่องหมาย(:))

Dim MyFile, MyPath, MyName

' ส่งค่า "WIN.INI" (สำหรับ Microsoft Windows) ถ้ามีอยู่จริง
MyFile = Dir("C:\WINDOWS\WIN.INI")

' ส่งชื่อไฟล์ที่มีการระบุนามสกุล (extension) ถ้ามากกว่าหนึ่งใช้ *.ini
' ไฟล์ที่มีอยู่จริงไฟล์แรกที่พบจะไดรับการส่งค่าออก
MyFile = Dir("C:\WINDOWS\*.INI")

' เรียกฟังก์ชัน Dir ที่ไม่มี argument อีกครั้งเพื่อส่งค่าไฟล์ต่อไปของ *.INI ในไดเรคทอรี่เดียวกัน
MyFile = Dir
MyFile = Dir("*.TXT", vbHidden) ' ส่งค่าไฟล์แรกของ *.TXT ที่กำหนด attribute เป็น hidden
MyPath = "c:\" ' Set the path. ' แสดงชื่อไฟล์ใน in C:\ that represent directories
MyName = Dir(MyPath, vbDirectory) ' ดึงชื่อแรก

' เริ่มต้น loop
Do While MyName <> ""
  ' ไม่พิจารณาไดเรคทอรี่ปัจจุบันและไดเรคทอรี่ที่ห้อมล้อม
  If MyName <> "." And MyName <> ".." Then
    ' ใช้ bitwise เปรียบเทียบเพื่อทำให้มั่นใจว่า MyName เป็นไดเรคทอรี่
    If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
      Debug.Print MyName ' แสดงชื่อถ้าเป็นไดเรคทอรี่
    End If
  End If

  MyName = Dir ' ดึงค่าเข้ามาใหม่
Loop