กระทู้เก่าบอร์ด อ.Yeadram
2,046 14
URL.หัวข้อ /
URL
ค้นหาไฟล์ตามลำดับชั้น
อาจารย์ครับผมจะเขียน Code ไงดีครับ
แบบว่า
ให้กดปุ้มชื่อว่า Botton1 แล้วค้นหาไดร์ที่สามารถเปิด ยกตัวอย่าง
D:\test\sub01\subf02\text.xls
1.ถ้ามีไฟล์ให้เปิดไฟล์ text.xls
2.แต่ไม่มีไฟล์ text.xls ก็ให้ เปิด Fonder ลำดับต่อไปคือ subf02
3.แต่ถ้าไม่มี Fonder ชื่อ subf02 อีก ก็ให้ เปิด Fonder ลำดับต่อไปคือ sub01
4.แต่ถ้า Fonder ก็ให้เปิด ไดร์ ตามลำดับ D:
อาจารย์ครับผมยังมือใหม่นะคราบ
แบบว่า
ให้กดปุ้มชื่อว่า Botton1 แล้วค้นหาไดร์ที่สามารถเปิด ยกตัวอย่าง
D:\test\sub01\subf02\text.xls
1.ถ้ามีไฟล์ให้เปิดไฟล์ text.xls
2.แต่ไม่มีไฟล์ text.xls ก็ให้ เปิด Fonder ลำดับต่อไปคือ subf02
3.แต่ถ้าไม่มี Fonder ชื่อ subf02 อีก ก็ให้ เปิด Fonder ลำดับต่อไปคือ sub01
4.แต่ถ้า Fonder ก็ให้เปิด ไดร์ ตามลำดับ D:
อาจารย์ครับผมยังมือใหม่นะคราบ
14 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R18205
อาจารย์....คราบ...ช่วยแนะนำผมที่
2 @R18207
แก้ไขคำถามนิดนะครับ
อาจารย์ครับผมจะเขียน Code ไงดีครับ
แบบว่า
ให้กดปุ้มชื่อว่า Botton1 แล้วค้นหาไดร์ที่สามารถเปิด ยกตัวอย่าง
D:\test\sub01\subf02\text.xls
1.ถ้ามีไฟล์ให้เปิดไฟล์ text.xls
2.แต่ไม่มีไฟล์ text.xls ก็ให้ เปิด Fonder ลำดับต่อไปคือ subf02
3.แต่ถ้าไม่มี Fonder ชื่อ subf02 อีก ก็ให้ เปิด Fonder ลำดับต่อไปคือ sub01
4.แต่ถ้าไม่มี Fonder ชื่อ sub01 อีก ก็ให้ เปิด Fonder ลำดับต่อไปคือ test
5.แต่ถ้าไม่มี Fonder ชื่อ test อีก ก็ให้ เปิด D:\
อาจารย์ครับผมยังมือใหม่นะคราบ
อาจารย์ครับผมจะเขียน Code ไงดีครับ
แบบว่า
ให้กดปุ้มชื่อว่า Botton1 แล้วค้นหาไดร์ที่สามารถเปิด ยกตัวอย่าง
D:\test\sub01\subf02\text.xls
1.ถ้ามีไฟล์ให้เปิดไฟล์ text.xls
2.แต่ไม่มีไฟล์ text.xls ก็ให้ เปิด Fonder ลำดับต่อไปคือ subf02
3.แต่ถ้าไม่มี Fonder ชื่อ subf02 อีก ก็ให้ เปิด Fonder ลำดับต่อไปคือ sub01
4.แต่ถ้าไม่มี Fonder ชื่อ sub01 อีก ก็ให้ เปิด Fonder ลำดับต่อไปคือ test
5.แต่ถ้าไม่มี Fonder ชื่อ test อีก ก็ให้ เปิด D:\
อาจารย์ครับผมยังมือใหม่นะคราบ
3 @R18208
1. จำเป็นต้องเรียงลำดับชื่อโฟลเดอร์ที่ต้องการหาหรือป่าวครับ เช่น ต้องหาใน sub1 ก่อน ไม่มีแล้วค่อย sub2 หรือไม่จำเป็น
2. หรือแค่ต้องการหาไฟล์สมมุติชื่อ text.xls ที่ไดร์ฟ D: ไม่ว่าจะอยู่ในโฟลเดอร์ไหนก็ตาม
3. แล้วถ้าเกิดชื่อไฟล์ text.xls มีมากกว่าหนึ่งไฟล์ คืออยู่คนละโฟลเดอร์คุณจะทำยังไง
ปล. ผมถามเผื่อท่านอื่นจะได้ช่วยคิดให้ได้นะครับ ผมยังไม่มีเวลาถ้ารีบคงต้องรบกวนท่านอื่นช่วยตอบ
2. หรือแค่ต้องการหาไฟล์สมมุติชื่อ text.xls ที่ไดร์ฟ D: ไม่ว่าจะอยู่ในโฟลเดอร์ไหนก็ตาม
3. แล้วถ้าเกิดชื่อไฟล์ text.xls มีมากกว่าหนึ่งไฟล์ คืออยู่คนละโฟลเดอร์คุณจะทำยังไง
ปล. ผมถามเผื่อท่านอื่นจะได้ช่วยคิดให้ได้นะครับ ผมยังไม่มีเวลาถ้ารีบคงต้องรบกวนท่านอื่นช่วยตอบ
4 @R18210
อาจารย์ครับจริงๆแล้วอยากจะเปิดไฟล์ในไดร์
D:\test\sub01\subf02\text.xls นี้แหละครับ
แต่บางครั้งอาจจะไม่มีไฟล์ text.xls อยู่ในโฟนเดอร์ subf02 นี้แต่มีโฟนเดอร์
มีโฟนเดอร์อยู่ จุดประส่งค์ของผมคืออยากจะเปิดไปยัง directory
ที่ใกล้ที่สุดที่ไฟล์ text.xls เก็บอยู่ ดังนั้นตอคำถามครับอาจารย์อเป็นข้อๆนะคราบ
1. จำเป็นต้องเรียงลำดับชื่อโฟลเดอร์ที่ต้องการหาครับ เพื่อนำไปเปิดไฟล์
หรือ directory ที่ใกล้ที่สุดครับ และ ไฟล์ text.xls จะอยู่ในdirectoryนี้เท่านั้น
2. ต้องการหา text.xls ในเฉพาะ D:\test\sub01\subf02\ เท่านั้นคราบ
3. แต่ถ้าไฟล์ text.xls มีมากกว่าหนึ่งไฟล์ ก็ไม่สนใจครับแค่ต้องการจะเปิด
directory ตามลำดับครับเพื่อที่จะเข้าแหล่งจัดเก็บที่ใกล้ที่สุดครับ
อาจารย์ ช่วยผมที่นะคราาบ
D:\test\sub01\subf02\text.xls นี้แหละครับ
แต่บางครั้งอาจจะไม่มีไฟล์ text.xls อยู่ในโฟนเดอร์ subf02 นี้แต่มีโฟนเดอร์
มีโฟนเดอร์อยู่ จุดประส่งค์ของผมคืออยากจะเปิดไปยัง directory
ที่ใกล้ที่สุดที่ไฟล์ text.xls เก็บอยู่ ดังนั้นตอคำถามครับอาจารย์อเป็นข้อๆนะคราบ
1. จำเป็นต้องเรียงลำดับชื่อโฟลเดอร์ที่ต้องการหาครับ เพื่อนำไปเปิดไฟล์
หรือ directory ที่ใกล้ที่สุดครับ และ ไฟล์ text.xls จะอยู่ในdirectoryนี้เท่านั้น
2. ต้องการหา text.xls ในเฉพาะ D:\test\sub01\subf02\ เท่านั้นคราบ
3. แต่ถ้าไฟล์ text.xls มีมากกว่าหนึ่งไฟล์ ก็ไม่สนใจครับแค่ต้องการจะเปิด
directory ตามลำดับครับเพื่อที่จะเข้าแหล่งจัดเก็บที่ใกล้ที่สุดครับ
อาจารย์ ช่วยผมที่นะคราาบ
5 @R18211
หมายถึงถ้ามีไฟล์ชื่อ text.xls ในพาธ
D:\test\sub01\subf02\text.xls
ก็ใให้เปิดไฟล์เลย แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test\sub01\text.xls
ถ้ามีก็ไห้เปิดเลย แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test\text.xls
ถ้ามีก็ไห้เปิดเลย แต่ถ้าไม่มีก็ถอยไปหาที่ Root
D:\text.xls
ถ้ามีก็ให้เปิด ไม่มีก็ขึ้นข้อความว่า ไม่พบไฟล์ อะไรแบบนี้หรือเปล่าครับ
D:\test\sub01\subf02\text.xls
ก็ใให้เปิดไฟล์เลย แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test\sub01\text.xls
ถ้ามีก็ไห้เปิดเลย แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test\text.xls
ถ้ามีก็ไห้เปิดเลย แต่ถ้าไม่มีก็ถอยไปหาที่ Root
D:\text.xls
ถ้ามีก็ให้เปิด ไม่มีก็ขึ้นข้อความว่า ไม่พบไฟล์ อะไรแบบนี้หรือเปล่าครับ
6 @R18212
เกือบถูกครับ แตเป็นแบบนี้ครับอาจารย์
หมายถึงถ้ามีไฟล์ชื่อ text.xls ในพาธ
D:\test\sub01\subf02\text.xls ก็ให้เปิดไฟล์เลย
แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test\sub01\subf02
แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test\sub01
แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test
แต่ถ้าไม่มีก็ถอยไปหาที่
D:
ถ้ามีก็ให้เปิด ไม่มีก็ขึ้นข้อความว่า ไม่พบไฟล์ อะไรแบบนี้หรือเปล่าครับ
เป็นแบบนี้ครับอาจารย์
หมายถึงถ้ามีไฟล์ชื่อ text.xls ในพาธ
D:\test\sub01\subf02\text.xls ก็ให้เปิดไฟล์เลย
แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test\sub01\subf02
แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test\sub01
แต่ถ้าไม่มีก็ถอยไปหาที่
D:\test
แต่ถ้าไม่มีก็ถอยไปหาที่
D:
ถ้ามีก็ให้เปิด ไม่มีก็ขึ้นข้อความว่า ไม่พบไฟล์ อะไรแบบนี้หรือเปล่าครับ
เป็นแบบนี้ครับอาจารย์
7 @R18213
ผมว่าคุณเข้าใจไรผิดป่าวครับ
D:\test\sub01\subf02\text.xls
D:\test\sub01\subf02
ส่วน text.xls คือชื่อไฟล์ที่อยู่ในพาะ D:\test\sub01\subf02
มันคือพาธเดียวกันนะครับ
ทับทวนแนวคิดใหม่ให้ดีๆก่อนนะครับ ไม่งั้นเขียนโค๊คออกมาแล้วก็ใช้ไม่ได้อยู่ดีอะครับ
D:\test\sub01\subf02\text.xls
D:\test\sub01\subf02
ส่วน text.xls คือชื่อไฟล์ที่อยู่ในพาะ D:\test\sub01\subf02
มันคือพาธเดียวกันนะครับ
ทับทวนแนวคิดใหม่ให้ดีๆก่อนนะครับ ไม่งั้นเขียนโค๊คออกมาแล้วก็ใช้ไม่ได้อยู่ดีอะครับ
8 @R18214
เกือบถูกครับ แตแก่นิดนึง เป็นแบบนี้ครับอาจารย์
หมายถึงถ้ามีไฟล์ชื่อ text.xls ในพาธ
D:\test\sub01\subf02\text.xls ก็ให้เปิดไฟล์เลย
แต่ถ้าไม่มีก็ถอยไปเปิดโฟนเดอร์
D:\test\sub01\subf02\
แต่ถ้าไม่มีก็ถอยไปเปิดโฟนเดอร์
D:\test\sub01\
แต่ถ้าไม่มีก็ถอยไปเปิดโฟนเดอร์
D:\test\
แต่ถ้าไม่มีก็ถอยไปเปิด
D:\
ถ้ามีก็ให้เปิด ไม่มีก็ขึ้นข้อความว่า ไม่พบไฟล์ อะไรแบบนี้หรือเปล่าครับ
เป็นแบบนี้ครับอาจารย์
หมายถึงถ้ามีไฟล์ชื่อ text.xls ในพาธ
D:\test\sub01\subf02\text.xls ก็ให้เปิดไฟล์เลย
แต่ถ้าไม่มีก็ถอยไปเปิดโฟนเดอร์
D:\test\sub01\subf02\
แต่ถ้าไม่มีก็ถอยไปเปิดโฟนเดอร์
D:\test\sub01\
แต่ถ้าไม่มีก็ถอยไปเปิดโฟนเดอร์
D:\test\
แต่ถ้าไม่มีก็ถอยไปเปิด
D:\
ถ้ามีก็ให้เปิด ไม่มีก็ขึ้นข้อความว่า ไม่พบไฟล์ อะไรแบบนี้หรือเปล่าครับ
เป็นแบบนี้ครับอาจารย์
9 @R18215
555 คุณกับผมเข้าใจค่าพาธต่างกันอะครับ
D:\test\sub01\subf02\text.xls
D:\test\sub01\subf02\
สำหรับผมคือพาธเดียวกันถอยไม่ได้ คุณลองทำความเข้าใจเรื่อง Path ดูก่อนดีไม๊ครับ จะได้ออกแบบได้เข้าใจตรงกัน
D:\test\sub01\subf02\text.xls
D:\test\sub01\subf02\
สำหรับผมคือพาธเดียวกันถอยไม่ได้ คุณลองทำความเข้าใจเรื่อง Path ดูก่อนดีไม๊ครับ จะได้ออกแบบได้เข้าใจตรงกัน
10 @R18216
ถ้ามีไฟล์ใน Path ก็ให้เปิดไฟล์ครับ
แต่ถ้าไม่มีไฟล์อยู่ก็ให้เปิดโฟนเดอร์แทนครับ แบบนี้ครับอาจารย์
แต่บางครั้งมันไมมีโฟนเดอร์ subf02 ก็เลยต้องถอยไปเปิดโฟนเดอร์ sub01แทน
และบางครั้งไม่มีโฟนเดอร์ sub01จึงเปิดโฟนเดอร์ลำดับถัดมา test แทนครับ
ผมก็มือให้ครับอาจารย์ ยังไงผมขอความกรุณาผมทีครับ
แต่ถ้าไม่มีไฟล์อยู่ก็ให้เปิดโฟนเดอร์แทนครับ แบบนี้ครับอาจารย์
แต่บางครั้งมันไมมีโฟนเดอร์ subf02 ก็เลยต้องถอยไปเปิดโฟนเดอร์ sub01แทน
และบางครั้งไม่มีโฟนเดอร์ sub01จึงเปิดโฟนเดอร์ลำดับถัดมา test แทนครับ
ผมก็มือให้ครับอาจารย์ ยังไงผมขอความกรุณาผมทีครับ
11 @R18217
- จากคำพูดคุณที่ว่า
ถ้ามีไฟล์ใน Path ก็ให้เปิดไฟล์ครับ
แต่ถ้าไม่มีไฟล์อยู่ก็ให้เปิดโฟนเดอร์แทนครับ
คือตกลงหมายถึง ถ้ามีไฟล์ใน D:\test\sub01\subf02\text.xls ก็ให้สั่งเปิดไฟล์ text.xls
แต่ถ้าไม่มีก็ให้เป็นการเปิด Explorer พาธไปที่ D:\test\sub01\subf02\ แทน
แต่ถ้าไม่มีโฟลเดอร์ subf02 ให้เปิดอีก ก็เปิด Explorer พาธไปที่ D:\test\sub01\
ประมาณนี้หรือครับ เหนื่อยจัง
และอีกอย่างนะครับ ผมไม่เชื่อว่าคุณเขียนคำว่า Fonder คือ Folder, โฟนเดอร์ คือ โฟลเดอร์ ผิด ผมคิดว่าคุณตั้งใจเขียนแบบนี้เอง
ขอแนะนำนิดนะครับ ควรใช้ศัพท์ให้ถูกต้องนะครับ ผมก็ไม่ใช่คนใช้คำถูกเท่าไหร่ แต่เพื่อการสื่อสารกับคนอื่น และคำว่า Folder มันใช้ในฟังก์ชั่น ชุดคำสั่ง และ Property ของฟังก์หลายตัว เช่น VBScript, Scripting Runtime ใช้จนติดแล้วอีกหน่อยคุณจะ งง และทำให้คนอื่น งง ตามคุณไปด้วยนะครับ
ถ้ามีไฟล์ใน Path ก็ให้เปิดไฟล์ครับ
แต่ถ้าไม่มีไฟล์อยู่ก็ให้เปิดโฟนเดอร์แทนครับ
คือตกลงหมายถึง ถ้ามีไฟล์ใน D:\test\sub01\subf02\text.xls ก็ให้สั่งเปิดไฟล์ text.xls
แต่ถ้าไม่มีก็ให้เป็นการเปิด Explorer พาธไปที่ D:\test\sub01\subf02\ แทน
แต่ถ้าไม่มีโฟลเดอร์ subf02 ให้เปิดอีก ก็เปิด Explorer พาธไปที่ D:\test\sub01\
ประมาณนี้หรือครับ เหนื่อยจัง
และอีกอย่างนะครับ ผมไม่เชื่อว่าคุณเขียนคำว่า Fonder คือ Folder, โฟนเดอร์ คือ โฟลเดอร์ ผิด ผมคิดว่าคุณตั้งใจเขียนแบบนี้เอง
ขอแนะนำนิดนะครับ ควรใช้ศัพท์ให้ถูกต้องนะครับ ผมก็ไม่ใช่คนใช้คำถูกเท่าไหร่ แต่เพื่อการสื่อสารกับคนอื่น และคำว่า Folder มันใช้ในฟังก์ชั่น ชุดคำสั่ง และ Property ของฟังก์หลายตัว เช่น VBScript, Scripting Runtime ใช้จนติดแล้วอีกหน่อยคุณจะ งง และทำให้คนอื่น งง ตามคุณไปด้วยนะครับ
12 @R18218
ประมาณนี้แหละครับครัย อาจารย์ เข้าใจถูกแล้ว ผมต้องขอโทษที่พิมพ์ผิดจริงๆ แต่ก็ไม่รู้จะเข้าไปแก้ตรงไหน พอรู้ตัวอีกทีก็ post ไปแล้วครับ ต้อขอโทษจริงๆที่ต้องให้อาจารย์เหนื่อย
แต่อาจารย์ช่วยผมทีนะครับ
แต่อาจารย์ช่วยผมทีนะครับ
13 @R18221
ไม่รู้จะตรงความต้องการแค่ไหนนะครับ ปรับแต่งดูแล้วกันครับ
1. ใส่โค๊ดลงใน Module
2. ใส่โค๊ดที่ปุ่ม Event > On Click
Call TTT("D:\test\sub01\subf02\", "text.xls")
1. ใส่โค๊ดลงใน Module
Option Explicit
Public Sub TTT(sPath As String, sName As String)
Dim strFile As String, Temp As String
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"
If sName Like "*\*" Then sName = Replace(sName, "\", "")
Temp = sPath & sName
On Error GoTo err_msg
strFile = Dir(Temp, vbNormal)
Do While strFile = ""
Temp = Last_Chr(Temp, "\")
strFile = Dir(Temp, vbDirectory)
If Right(Temp, 1) = ":" And strFile = "" Then MsgBox "No File": Exit Do
Loop
CreateObject("WScript.Shell").Run """" & Temp & """"
err_exit: Exit Sub
err_msg: MsgBox "ใส่ค่าฟังก์ชั่นผิดพลาด", vbInformation, "Error": Resume err_exit
End Sub
Private Function Last_Chr(txt_String As String, txt_Chr As String) As String
Dim TCount As Integer, NCount As Integer
NCount = 1
Do
TCount = InStr(NCount, txt_String, txt_Chr)
If TCount > 0 Then
NCount = 1 + TCount
End If
Loop Until TCount = 0
Last_Chr = Left(txt_String, NCount - 2)
End Function
2. ใส่โค๊ดที่ปุ่ม Event > On Click
Call TTT("D:\test\sub01\subf02\", "text.xls")
14 @R18224
อาจารย์ครับ ทำได้แล้วครับ
ขอบคุณ อาจย์
ขอบคุณ อาจย์
ขอบคุณ อาจย์
ขอบคุณ อาจย์
ขอบคุณ อาจย์
ขอบคุณ อาจย์
Time: 0.3281s