เราสามารถเปลี่ยนชื่อ Shortcut ได้ตามต้องการไหมคะ
กระทู้เก่าบอร์ด อ.Yeadram

 739   7
URL.หัวข้อ / URL
เราสามารถเปลี่ยนชื่อ 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

1 @R23311
คิดว่าต้องแก้ไขอย่างนี้

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")
2 @R23312
ขอบพระคุณอย่างยิ่งค่ะอาจารย์
ก่อหน้าที่ท่านจะเข้ามาตอบ เมื่อช่วงค่ำนี้เอง หนูทำได้แล้วค่ะ
วิธีอาจแตกต่างจากที่ท่านกรุณาแนะนำไว้ ดังนี้ค่ะ

หนูพยายามแกะในโมดูลแล้วลองแก้ไขใหม่จากเดิม

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 ]

หนูพยายามหาข้อผิดพลาดในฟังชั่นตามที่ท่านแนะนำแล้ว
ก็มั่นใจว่าทำถูกต้องทุกอย่างค่ะอาจารย์
ขอรบกวนอาจารย์ อีกนิดนะคะ
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, "ชื่อที่เราต้องการ")
7 @R23324
เย้..สำเร็จแล้วค่ะอาจารย์
แก้ไขตามที่ท่านแนะนำ
Call fCreateShortcutOnDesktop(CurrentDB.Name, "ชื่อที่เราต้องการ")
ใช้ได้ทันทีเลย ไม่มี error

ขอบพระคุณอย่างยิ่งค่ะอาจารย์
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2434s