Page 1 of 1
คำถาม VBA จะไม่ให้ User ใช้งานไฟล์ถ้าเปิดใน networkdrive
Posted: Fri Feb 27, 2015 7:25 pm
by eieisung
เนื่องจากตอนนี้กระจายงานให้ user ผ่านทาง Network Drive มีหลาย Path
และด้วยจำนวน User มีหลายร้อยคนบางคนชอบเปิดไฟล์บน Network Drive เลย ทำให้ช้า อืด ไฟล์มีปัญหา
ดังนั้น ผมจึงอยากตรวจสอบว่าถ้าเค้าเปิดไฟล์นี้บน Network Drive อยู่ให้ปิดไฟล์อัตโนมัติครับ
คำถามคือ จะทำอย่างไร ถึงจะรู้ว่าที่ตั้งไฟล์ที่กำลังเปิดนี้ อยู่บน Network Drive ครับ
Re: คำถาม VBA จะไม่ให้ User ใช้งานไฟล์ถ้าเปิดใน networkdrive
Posted: Fri Feb 27, 2015 7:28 pm
by snasui

ลองตรวจสอบ Path ของไฟล์ที่กำลังเปิดด้วย Code ว่าได้ค่ามาอย่างไร แตกต่างจาก Path ปกติที่ต้องการให้ใช้อย่างไร ใช้ความแตกต่างนั้นในการปิดไฟล์ครับ
Re: คำถาม VBA จะไม่ให้ User ใช้งานไฟล์ถ้าเปิดใน networkdrive
Posted: Sun Mar 01, 2015 2:36 pm
by menem
Code: Select all
Sub y()
Dim fs, d, s, t
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(Left(ActiveWorkbook.Path, 2))
Select Case d.DriveType
Case 0: t = "Unknown"
Case 1: t = "Removable"
Case 2: t = "Fixed"
Case 3: t = "Network"
Case 4: t = "CD-ROM"
Case 5: t = "RAM Disk"
End Select
s = "Drive " & d.DriveLetter & ": - " & t
MsgBox s
End Sub
อ้างอิงจาก
https://msdn.microsoft.com/en-us/librar ... 64195.aspx
หรือปรับเป็น
Code: Select all
Sub yy()
Dim fs, d, s, t
Set fs = CreateObject("Scripting.FileSystemObject")
For Each d In fs.drives
Select Case d.DriveType
Case 0: t = "Unknown"
Case 1: t = "Removable"
Case 2: t = "Fixed"
Case 3: t = "Network"
Case 4: t = "CD-ROM"
Case 5: t = "RAM Disk"
End Select
s = "Drive " & d.DriveLetter & ": - " & t
MsgBox s
Next
End Sub
Re: คำถาม VBA จะไม่ให้ User ใช้งานไฟล์ถ้าเปิดใน networkdrive
Posted: Sun Mar 01, 2015 4:18 pm
by eieisung
ตอบคุณ snasui
ขอบคุณครับ
แต่เนื่องจาก user แต่ละคนมีพาทย่อยเป็นของตัวเอง และจะไม่มีสิทธิใช้พาทใหญ่ร่วมกัน
ดังนั้น ที่เครื่องของแต่ละคนจะถูก Map Network Drive ด้วยพาทของตัวเองเท่านั้น
Drive ที่ Map ขึ้นมาก็มีต่างๆ เช่น T: S: V: หรืออื่นๆตามแต่ที่ Drive ในเครื่องนั้นจะอำนวย
และเมื่อใช้คำสั่งตรวจสอบพาท จะไม่ได้พาทที่เป็น Network Drive จริงๆ(\\brabra\pathใหญ่\pathย่อย)
แต่จะได้เป็น (T: S: V: หรืออื่นๆ)\pathย่อย แทน จึงทำให้ตรวจสอบไม่ได้ว่าเป็น Network Drive จริงหรือไม่ครับ
ตอบคุณ menem
ขอบคุณครับ
Re: คำถาม VBA จะไม่ให้ User ใช้งานไฟล์ถ้าเปิดใน networkdrive
Posted: Sun Mar 01, 2015 5:37 pm
by snasui
eieisung wrote:ตอบคุณ snasui
ขอบคุณครับ
แต่เนื่องจาก user แต่ละคนมีพาทย่อยเป็นของตัวเอง และจะไม่มีสิทธิใช้พาทใหญ่ร่วมกัน
ดังนั้น ที่เครื่องของแต่ละคนจะถูก Map Network Drive ด้วยพาทของตัวเองเท่านั้น
Drive ที่ Map ขึ้นมาก็มีต่างๆ เช่น T: S: V: หรืออื่นๆตามแต่ที่ Drive ในเครื่องนั้นจะอำนวย
และเมื่อใช้คำสั่งตรวจสอบพาท จะไม่ได้พาทที่เป็น Network Drive จริงๆ(\\brabra\pathใหญ่\pathย่อย)
แต่จะได้เป็น (T: S: V: หรืออื่นๆ)\pathย่อย แทน จึงทำให้ตรวจสอบไม่ได้ว่าเป็น Network Drive จริงหรือไม่ครับ

ตรวจสอบแล้วไม่ได้ผลเช่นไรก็โพสต์ Code มาถามกันต่อ ที่ผมตอบไปก็เป็นหลักการในการตรวจสอบเพื่อหาความแตกต่างเท่านั้นครับ