เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Results 1 to 6 of 6

Thread: สามารถตรวจหาการ Save ได้หรือไม่ครับ

  1. #1
    ittaVB
    Guest

    สามารถตรวจหาการ Save ได้หรือไม่ครับ

    ใน VBA ถ้าหากเราต้องการป้องกันไม่ให้มีการบันทึกใดๆ ที่ทำงานโดย Excel เว้นแต่การบันทึกจาก code ที่เราเขียนเอง เราสามารถป้องกันได้ไหมครับ? ความคิดผมก็คือให้มีการตรวจจับว่ามีการกดปุ่ม save หรือไม่ แล้วค่อยสั่งให้จบการทำงานก่อนที่จะบันทึก แต่ไม่รู้จะดักจับด้วยวิธีการไหน รบกวนผู้รู้ให้คำแนะนำด้วยครับ
    ขอบคุณครับ

  2. #2
    สมเกียรติ
    Guest
    แทนที่จะใช้ VBA ปิดเมนู Save หรือกันการกดปุ่ม Ctrl+s ซึ่งผู้ใช้เก่งๆอาจหาทาง save จนได้หรือ copy ออกไปที่แฟ้มอื่นแล้ว save

    ที่ผมเคยใช้โดยใช้ Windows Explorer กำหนด Property ของแฟ้มให้เป็น Read Only จะได้เปิดดูได้อย่างเดียว

  3. #3
    ittaVB
    Guest
    ขอบคุณครับ อาจารย์สมเกียรติ
    ผมกำลังเขียนโปรแกรมด้วยวิธีการป้องกันไม่ให้บันทึกไปใช้กับคอมพิวเตอร์เครื่องอื่นครับ
    การป้องกันของผมก็คือให้ไปเก็บค่า S/N ของ HDD มาเก็บไว้ใน cell แล้วก็ให้โปรแกรมตรวจสอบทุกครั้งก่อนที่จะใช้งาน หลังจากได้ค่ามาเก็บแล้วผมจะตั้งให้เป็น Readonly แล้วครับ
    แต่ผมอยากจะให้ตัวโปรแกรมป้องกันตนเองครับโดยการไม่ยอมให้บันทึกเลย ไม่ว่าจะเป็น Readonly แล้วเปลี่ยนเป็นชื่ออื่น ผมก็เลยอยากจะทราบว่ามีวิธีการไหนบ้างที่เราจะดักจับการบันทึกจากผู้ใช้ ถ้าดักจับได้แล้วผมก็จะสั่งให้โปรแกรมปิดตัวเองโดยไม่มีการบันทึกใดๆ เลยครับ

    ที่จริงแล้วผมก็เข้าใจว่าคนเราเก่งขึ้นมาก หาทางแก้ไขโปรแกรมที่เราเขียนไว้อยู่แล้ว ที่อยากจะได้มากกว่านั้นก็คือความรู้ครับ และผมก็คิดว่าบอร์ดนี้เป็นแหล่งเรียนรู้ที่ดีที่สุดของผมตั้งแต่ผมเริ่มใช้งาน VBA ผมได้นำเอาวิธีการบางวิธีที่สมาชิกหลายท่านนำเสนอไปใช้งาน ยอมรับครับว่ามีประโยชน์เป็นอย่างมากครับ

    ขอบคุณอีกครั้งครับ

  4. #4
    สมเกียรติ
    Guest
    มีหลายวิธีที่ทำให้แฟ้มที่ save ในโฟลเดอร์หรือชื่อใหม่ แล้ว VBA ทำงานต่อไม่ได้ เช่น
    • ใช้วิธีตรวจสอบ Path โดยใช้คำสั่ง ThisWorkbook.Path = ที่อยู่ที่กำหนดเดิม
    • ใช้วิธีตรวจสอบชื่อแฟ้ม โดยใช้คำสั่ง ThisWorkbook.Name = ชื่อแฟ้มเดิม
    ถ้ากลัวว่าเขาจะสร้างโฟลเดอร์ชื่อซ้ำกับเราเพื่อทำให้ VBA ทำงานต่อได้ ก็ให้ใช้คำสั่ง ThisWorkbook.Path ไปตรวจสอบชื่อแฟ้มอื่นที่ต้องอยู่ในโฟลเดอร์เดยวกันกับที่เราใช้ เช่น
    Filename = ThisWorkbook.Path & "\ExpertModule.bas"

    ลองพยายาม save แฟ้มตัวอย่างที่แนบมานี้ครับ แฟ้มจะปิดตัวเองทันทีโดยไม่ save แต่มีจุดอ่อนตรงที่ถ้าผู้ใช้เปิดแฟ้มโดย Disable Macro จะ save ได้เสมอเพราะ VBA ไม่ทำงาน (จึงเป็นเหตุที่เราไม่ควรพึ่งตัวรหัส VBA ในการป้องกันการ save)

    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        MsgBox "แฟ้มนี้ห้าม Save"
        ThisWorkbook.Close (False)
    End Sub

  5. #5
    อรวีร์
    Guest

    Smile

    ลองดูรูปแนบค่ะ

  6. #6
    ittaVB
    Guest
    ขอบคุณอาจารย์สมเกียรติ, คุณอรวีร์ มากครับ

Similar Threads

  1. show / Hide ปุ่ม CommandButton ได้หรือไม่ครับ
    By boorapa in forum Excel Expert Forum Library 2012 - 2007
    Replies: 3
    Last Post: 12 Nov 2009, 15:31
  2. Replies: 3
    Last Post: 14 Oct 2009, 09:30
  3. Replies: 10
    Last Post: 7 Mar 2008, 20:31
  4. ซ่อนข้อความในExcel ได้หรือไม่ครับ
    By Experion in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 12 Oct 2007, 20:30
  5. Replies: 2
    Last Post: 23 Jul 2007, 19:45

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •