กระทู้เก่าบอร์ด อ.Yeadram
851 7
URL.หัวข้อ /
URL
เราสามารถเปลี่ยนชื่อ Shortcut ได้ตามต้องการไหมคะ
หนูไปค้นหาเจอข้อมูลการสร้าง Shortcut จากเว็บบอร์ดเก่าของ อ.สุภาพ
ซึ่งคุณโม ได้ตั้งกระทู้ถามเอาไว้เมื่อปี 2547
การสร้าง Shortcut ให้ไฟล์ปัจจุบันที่เปิดอยู่
หนูนำไปทดลองทำตามดูแล้ว..ว้าว..มันได้ผลดีมากๆเลยค่ะ
แต่หนูอยากจะไห้ชื่อของ Shortcut ดังกล่าว เป็นชื่อตามที่เรากำหนดเอง
เพื่อให้สื่อความหมายได้ดีขึ้น สามารถทำได้ไหมคะ
จากคำสสั่งเดิม มันจะได้ชื่อตามชื่อตัวโปรแกรมของเราค่ะ
ซึ่งคุณโม ได้ตั้งกระทู้ถามเอาไว้เมื่อปี 2547
Function fCreateShortcutOnDesktop(strFullFilePathName As String) _
As Long
(ยังมีต่ออีกหลายบรรทัดค่ะ)
การสร้าง Shortcut ให้ไฟล์ปัจจุบันที่เปิดอยู่
fCreateShortcutOnDesktop(CurrentDb.Name)
หนูนำไปทดลองทำตามดูแล้ว..ว้าว..มันได้ผลดีมากๆเลยค่ะ
แต่หนูอยากจะไห้ชื่อของ Shortcut ดังกล่าว เป็นชื่อตามที่เรากำหนดเอง
เพื่อให้สื่อความหมายได้ดีขึ้น สามารถทำได้ไหมคะ
จากคำสสั่งเดิม มันจะได้ชื่อตามชื่อตัวโปรแกรมของเราค่ะ
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R23312
ขอบพระคุณอย่างยิ่งค่ะอาจารย์
ก่อหน้าที่ท่านจะเข้ามาตอบ เมื่อช่วงค่ำนี้เอง หนูทำได้แล้วค่ะ
วิธีอาจแตกต่างจากที่ท่านกรุณาแนะนำไว้ ดังนี้ค่ะ
หนูพยายามแกะในโมดูลแล้วลองแก้ไขใหม่จากเดิม
Set WSHShortcut = WSHShell.CreateShortcut _
(strDesktopPath & "\" & strFileName & ".lnk")
แก้เป็น
Set WSHShortcut = WSHShell.CreateShortcut _
(strDesktopPath & "\" & " ชื่อที่เราต้องการ " & ".lnk")
หนูไม่ทราบว่าถูกหลัการหรือไม่ แต่เห็นว่าผลมันออกมาได้ตามที่ต้องการ
หนูก็เลยใช้ตามนั้นค่ะอาจารย์
ก่อหน้าที่ท่านจะเข้ามาตอบ เมื่อช่วงค่ำนี้เอง หนูทำได้แล้วค่ะ
วิธีอาจแตกต่างจากที่ท่านกรุณาแนะนำไว้ ดังนี้ค่ะ
หนูพยายามแกะในโมดูลแล้วลองแก้ไขใหม่จากเดิม
Set WSHShortcut = WSHShell.CreateShortcut _
(strDesktopPath & "\" & strFileName & ".lnk")
แก้เป็น
Set WSHShortcut = WSHShell.CreateShortcut _
(strDesktopPath & "\" & " ชื่อที่เราต้องการ " & ".lnk")
หนูไม่ทราบว่าถูกหลัการหรือไม่ แต่เห็นว่าผลมันออกมาได้ตามที่ต้องการ
หนูก็เลยใช้ตามนั้นค่ะอาจารย์
3 @R23313
ผลลัพธ์ที่ได้เหมือนกันแหล่ะครับ ของผมใช้วิธีส่ง "ชื่อที่เราต้องการ" ผ่านจากข้างนอกเข้ามาในฟังก์ชั่น เวลาเรียกใช้ก็ต้องเขียนเป็น fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ") ส่วนของคุณมาลี ใช้วิธีกำหนดตายตัวในฟังก์ชั่นไปเลย
4 @R23314
ขอบคุณค่ะอาจารย์
วิธีของอาจารย์ ยืดหยุ่นใช้งานได้ง่ายกว่า
เมื่อต้องการเปลี่ยนแปลงชื่อภายหลังก็สั่งจากภายนอกได้เลย ไม่ยุ่งยากดี
สรุป ขอเปลี่ยนมาใช้วิธีของอาจารย์ดีกว่าค่ะ
วิธีของอาจารย์ ยืดหยุ่นใช้งานได้ง่ายกว่า
เมื่อต้องการเปลี่ยนแปลงชื่อภายหลังก็สั่งจากภายนอกได้เลย ไม่ยุ่งยากดี
สรุป ขอเปลี่ยนมาใช้วิธีของอาจารย์ดีกว่าค่ะ
5 @R23316
หนูพยายามจะใช้วิธีของอาจารย์ดูแล้ว แต่ยังไม่สำเร็จเลยค่ะ
มันขึ้น error แดงทั้งบรรทัดนี้ค่ะ
fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ")
ขึ้นแจ้งว่า..
Compile error:
Expected:: =
[ OK ] [ Help ]
หนูพยายามหาข้อผิดพลาดในฟังชั่นตามที่ท่านแนะนำแล้ว
ก็มั่นใจว่าทำถูกต้องทุกอย่างค่ะอาจารย์
ขอรบกวนอาจารย์ อีกนิดนะคะ
มันขึ้น error แดงทั้งบรรทัดนี้ค่ะ
fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ")
ขึ้นแจ้งว่า..
Compile error:
Expected:: =
[ OK ] [ Help ]
หนูพยายามหาข้อผิดพลาดในฟังชั่นตามที่ท่านแนะนำแล้ว
ก็มั่นใจว่าทำถูกต้องทุกอย่างค่ะอาจารย์
ขอรบกวนอาจารย์ อีกนิดนะคะ
6 @R23323
โทษครับ ไม่ได้เข้ามาอ่าน นึกว่ากระทู้เดิมไม่ได้มีคำถามเพิ่มเติม
ฟังก์ชั่น คือโปรแกรมแกรมย่อยที่กำหนดให้มีการคืนค่ากลับมายังชื่อฟังก์ชั่นเอง ในกรณีฟังก์ชันตัวนี้ โค้ดที่เขียนได้กำหนดไว้ว่า ถ้ามีปัญหาใดๆในการทำงาน ก็ให้คืนค่า -1 แต่ถ้าไม่มีปัญหา ก็จะคืนค่าเป็น 0 กลับมา ดังนั้นต้องมีตัวแปรรับค่า เช่น
Dim ReturnValue As Long
...
...
ReturnValue = fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ")
If ReturnValue = -1 then
...
เกิดปัญหาจะให้ทำอะไรต่อไป
...
End If
หรือไม่อย่างนั้น การเรียกใช้ฟังก์ชั่นก็ต้องอยู่ในนิพจน์ที่นำค่าของฟังก์ชั่นไปคำนวนต่อไปทันที เช่น
if fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ") = -1 then
...
เกิดปัญหาจะให้ทำอะไรต่อไป
...
End If
หรือถ้าเราไม่สนใจค่าที่คืนกลับมา อย่างกรณีฟังก์ชั่นนี้ ถ้าเราไม่สนใจว่ามันจะเกิดปัญหาอะไรในฟังก์ชั่นหรือไม่ ก็สามารถเรียกใช้เหมือนเรียก Sub procedure ได้ ก็เพียงแต่ใช้ Call statement เพื่อเรียกฟังก์ชั่น โค้ดที่ได้ก็จะเป็น
Call fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ")
ฟังก์ชั่น คือโปรแกรมแกรมย่อยที่กำหนดให้มีการคืนค่ากลับมายังชื่อฟังก์ชั่นเอง ในกรณีฟังก์ชันตัวนี้ โค้ดที่เขียนได้กำหนดไว้ว่า ถ้ามีปัญหาใดๆในการทำงาน ก็ให้คืนค่า -1 แต่ถ้าไม่มีปัญหา ก็จะคืนค่าเป็น 0 กลับมา ดังนั้นต้องมีตัวแปรรับค่า เช่น
Dim ReturnValue As Long
...
...
ReturnValue = fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ")
If ReturnValue = -1 then
...
เกิดปัญหาจะให้ทำอะไรต่อไป
...
End If
หรือไม่อย่างนั้น การเรียกใช้ฟังก์ชั่นก็ต้องอยู่ในนิพจน์ที่นำค่าของฟังก์ชั่นไปคำนวนต่อไปทันที เช่น
if fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ") = -1 then
...
เกิดปัญหาจะให้ทำอะไรต่อไป
...
End If
หรือถ้าเราไม่สนใจค่าที่คืนกลับมา อย่างกรณีฟังก์ชั่นนี้ ถ้าเราไม่สนใจว่ามันจะเกิดปัญหาอะไรในฟังก์ชั่นหรือไม่ ก็สามารถเรียกใช้เหมือนเรียก Sub procedure ได้ ก็เพียงแต่ใช้ Call statement เพื่อเรียกฟังก์ชั่น โค้ดที่ได้ก็จะเป็น
Call fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ")
7 @R23324
เย้..สำเร็จแล้วค่ะอาจารย์
แก้ไขตามที่ท่านแนะนำ
ใช้ได้ทันทีเลย ไม่มี error
ขอบพระคุณอย่างยิ่งค่ะอาจารย์
แก้ไขตามที่ท่านแนะนำ
Call fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ")
ใช้ได้ทันทีเลย ไม่มี error
ขอบพระคุณอย่างยิ่งค่ะอาจารย์
Time: 0.3456s
Function fCreateShortcutOnDesktop(strFullFilePathName As String) _
As Long ให้เพิ่มอีกพารามิเตอร์สำหรับชื่อที่เราต้องการ ซึ่งจะได้เป็น Function fCreateShortcutOnDesktop(strFullFilePathName As String, StrShortcutName As String) _
As Long
และแก้บรรทัด
Set WSHShortcut = WSHShell.CreateShortcut _
(strDesktopPath & "\" & strFileName & ".lnk")
ให้เป็น
Set WSHShortcut = WSHShell.CreateShortcut _
(strDesktopPath & "\" & strShortcutName & ".lnk")