:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

ฟอรัมถาม-ตอบปัญหาการใช้งาน Macro และ VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Xengsue
Member
Member
Posts: 84
Joined: Fri Jun 23, 2017 7:57 pm

code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#1

Post by Xengsue »

เรียน อาจารย์ และ ผู้รู้ทุกท่าน ครับ
ผมมีเรื่องมาถาม ครับว่า
ผมได้เขียน code ห้ามไม่ให้ copy, cut and paste ลงใน workbook
แล้วผลก็ได้ความต้องการ แต่ยังติดที่ว่า
เมื่อ copy, cut จากที่อื่นที่ไม่ใช่ workbook เดียวกันมาวาง
มันสามารถวางได้ครับ ลบกวนช่วยเช็คดูให้หน่อยว่ายังติดตรงไหน

Code: Select all

Private Sub Workbook_Activate()
Dim oCtrl As Office.CommandBarControl

'Disable all Cut menus
     For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
            oCtrl.Enabled = False
     Next oCtrl

'Disable all Copy menus
     For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
            oCtrl.Enabled = False
     Next oCtrl
     
     'Disable Paste in Edit menu
     For Each oCtrl In Application.CommandBars.FindControls(ID:=22)
            oCtrl.Enabled = False
     Next oCtrl
     
     'Disable Paste Special...
     For Each oCtrl In Application.CommandBars.FindControls(ID:=755)
            oCtrl.Enabled = False
     Next oCtrl
     
          'Disable Paste button
     For Each oCtrl In Application.CommandBars.FindControls(ID:=6002)
            oCtrl.Enabled = False
     Next oCtrl
          
         'Disable Tools, Options so D&D cannot be restored
     For Each oCtrl In Application.CommandBars.FindControls(ID:=522)
            oCtrl.Enabled = False
     Next oCtrl
          Application.CellDragAndDrop = False
          Application.CutCopyMode = False 'Clear clipboard
End Sub

Private Sub Workbook_Deactivate()
Dim oCtrl As Office.CommandBarControl

'Enable all Cut menus
     For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
            oCtrl.Enabled = True
     Next oCtrl

'Enable all Copy menus
     For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
            oCtrl.Enabled = True
     Next oCtrl
     
          'Enable  Paste in Edit menu
     For Each oCtrl In Application.CommandBars.FindControls(ID:=22)
            oCtrl.Enabled = True
     Next oCtrl
     
     'Enable  Paste Special...
     For Each oCtrl In Application.CommandBars.FindControls(ID:=755)
            oCtrl.Enabled = True
     Next oCtrl
          
          'Enable  Paste button
     For Each oCtrl In Application.CommandBars.FindControls(ID:=6002)
            oCtrl.Enabled = True
     Next oCtrl
          
         'Enable  Tools, Options so D&D cannot be restored
     For Each oCtrl In Application.CommandBars.FindControls(ID:=522)
            oCtrl.Enabled = True
     Next oCtrl
        Application.CellDragAndDrop = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    With Application
        .CellDragAndDrop = False
        .CutCopyMode = False 'Clear clipboard
    End With
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#2

Post by snasui »

:D ควรแนบตัวอย่างไฟล์มาด้วยจะได้สะดวกในการทดสอบ ทั้งจะได้เห็นว่าเขียน Code ไว้ตำแหน่งใด อย่างไรครับ
Xengsue
Member
Member
Posts: 84
Joined: Fri Jun 23, 2017 7:57 pm

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#3

Post by Xengsue »

snasui wrote: Mon May 28, 2018 6:47 am :D ควรแนบตัวอย่างไฟล์มาด้วยจะได้สะดวกในการทดสอบ ทั้งจะได้เห็นว่าเขียน Code ไว้ตำแหน่งใด อย่างไรครับ
code ที่ผมเขียน ผมได้เขียนไว้ในนี้ ครับ
- เปีด Microsoft Visual Basic ขื้นมา แล้วไปที่ ThisWorkbook
- เขียน Code ตัวนี้ลงไปครับ

Code: Select all

Private Sub Workbook_Activate()
Dim oCtrl As Office.CommandBarControl

'Disable all Cut menus
     For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
            oCtrl.Enabled = False
     Next oCtrl

'Disable all Copy menus
     For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
            oCtrl.Enabled = False
     Next oCtrl
     
     'Disable Paste in Edit menu
     For Each oCtrl In Application.CommandBars.FindControls(ID:=22)
            oCtrl.Enabled = False
     Next oCtrl
     
     'Disable Paste Special...
     For Each oCtrl In Application.CommandBars.FindControls(ID:=755)
            oCtrl.Enabled = False
     Next oCtrl
     
          'Disable Paste button
     For Each oCtrl In Application.CommandBars.FindControls(ID:=6002)
            oCtrl.Enabled = False
     Next oCtrl
          
         'Disable Tools, Options so D&D cannot be restored
     For Each oCtrl In Application.CommandBars.FindControls(ID:=522)
            oCtrl.Enabled = False
     Next oCtrl
          Application.CellDragAndDrop = False
          Application.CutCopyMode = False 'Clear clipboard
End Sub

Private Sub Workbook_Deactivate()
Dim oCtrl As Office.CommandBarControl

'Enable all Cut menus
     For Each oCtrl In Application.CommandBars.FindControls(ID:=21)
            oCtrl.Enabled = True
     Next oCtrl

'Enable all Copy menus
     For Each oCtrl In Application.CommandBars.FindControls(ID:=19)
            oCtrl.Enabled = True
     Next oCtrl
     
          'Enable  Paste in Edit menu
     For Each oCtrl In Application.CommandBars.FindControls(ID:=22)
            oCtrl.Enabled = True
     Next oCtrl
     
     'Enable  Paste Special...
     For Each oCtrl In Application.CommandBars.FindControls(ID:=755)
            oCtrl.Enabled = True
     Next oCtrl
          
          'Enable  Paste button
     For Each oCtrl In Application.CommandBars.FindControls(ID:=6002)
            oCtrl.Enabled = True
     Next oCtrl
          
         'Enable  Tools, Options so D&D cannot be restored
     For Each oCtrl In Application.CommandBars.FindControls(ID:=522)
            oCtrl.Enabled = True
     Next oCtrl
        Application.CellDragAndDrop = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    With Application
        .CellDragAndDrop = False
        .CutCopyMode = False 'Clear clipboard
    End With
End Sub
ผลที่ออกมาได้ตามต้องการ แต่ยังติดที่ว่า
- เมื่อเรา copy or cut จากที่อื่นที่ไม่ใช่อยู่ใน file excel ตัวที่ผมได้ใส่ code ลงไป มาวางลงใน file excel ตัวที่ผมได้ใส่ code ลงไป
เห็นได้ว่ามันสามารถวางได้ครับ
- คือที่ผมค้องการคืไม่ให้วางอะไรลงในไฟล์ได้เลย ครับ
Attachments
ex.xlsm
ไฟล์ทดลอง
(15.66 KiB) Downloaded 8 times
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#4

Post by snasui »

:D ผมทดสอบเปิดไฟล์ที่แนบมากับไฟล์อื่นแล้วคัดลอกค่ามาวาพบว่าเมนูสำหรับการวางถูก Disable ไปแล้ว แสดงว่าไม่ยอมให้วาง ไม่ทราบว่าปัญหาคือยังแสดงเมนูการวางอยู่เช่นเดิมหรืออย่างไร ช่วยอธิบายเพิ่มด้วยครับ
Xengsue
Member
Member
Posts: 84
Joined: Fri Jun 23, 2017 7:57 pm

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#5

Post by Xengsue »

snasui wrote: Wed May 30, 2018 7:45 pm :D ผมทดสอบเปิดไฟล์ที่แนบมากับไฟล์อื่นแล้วคัดลอกค่ามาวาพบว่าเมนูสำหรับการวางถูก Disable ไปแล้ว แสดงว่าไม่ยอมให้วาง ไม่ทราบว่าปัญหาคือยังแสดงเมนูการวางอยู่เช่นเดิมหรืออย่างไร ช่วยอธิบายเพิ่มด้วยครับ
ที่ผมทำ ไม่รู้ว่าอาจารยทดลองเป็นเช่นกันไหม คือ code ที่ผมเขียนลงไปก็เพื่อที่จะปิดการ copy or cut and paste ทุกทางครับ คือ
ถ้าจะทำการ copy or cut and paste ในไฟล์ตัวนี้มันไม่สามารถทำได้อยู่แล้วเพาะผมเขียนสั่งปิดไปเอง แล้วปัณหานี้ผมทำแล้วผ่าน
แต่ที่ยังไม่ผ่านตรงที่ว่า เมื่อผม copy or cut ข้อความหรืออะไรจากที่อื่นไม่ว่าจะเป็นที่ไหนก็ช่างที่ไม่ใช่อยู่ใน file ตัวที่ผมได้เขียน code นี้ใส่ไปมันสามารถวางได้โดยทุกวิธีเลยครับ

ที่จริงความต้องการคือปิดทุกทิดทางของการ copy, cut and paste ครับ
Xengsue
Member
Member
Posts: 84
Joined: Fri Jun 23, 2017 7:57 pm

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#6

Post by Xengsue »

คือสมมุติว่าผมมีไฟล์ 2 ไฟล์ ชื่อ
1.ex1.xlsm (เป็นไฟล์ที่ผมได้เขียน code ใส่ไป)
2.ex2.xlsm (เป็นไฟล์ปกติไม่มี code)

เฉพาะไฟล์ ex1 ผมทำผ่านตามต้องการ
แต่พอผม copy or cut จากไฟล์ ex2 มาวางในไฟล์ ex1 ปรากฏว่ามันสามารถวางลงได้ทุกวิธีเลยครับ

ดั่งนั้น ผมต้องการอยากห้ามให้ไฟล์ ex1 ไม่สามารถที่จะ paste อะไรลงไปได้ทั้งสี้นครับ

รบกวนอาจารยด้วยครับ
ว่าผมเขียนผิดตรงไหน หรือ code ที่ผมเขียนยังไม่ได้สั่งปิดหมดทุกทิดทางครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#7

Post by snasui »

Xengsue wrote: Wed May 30, 2018 9:20 pm แต่พอผม copy or cut จากไฟล์ ex2 มาวางในไฟล์ ex1 ปรากฏว่ามันสามารถวางลงได้ทุกวิธีเลยครับ
:D ในเครื่องผมไม่สามารถวางได้เพราะเมนูถูก Disable ไปครับ
Xengsue
Member
Member
Posts: 84
Joined: Fri Jun 23, 2017 7:57 pm

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#8

Post by Xengsue »

แล้วผมขอคำแนะนำเพิ่มหน่อยครับ
คือที่ปิดแบบอาจารยบอกมา มันปิดยังไง แล้วผมคิดว่าน่าจะเป็นการปิดสำลับทุกไฟล์เลยใช่ไหมครับ
แต่ผมต้องการทำสำลับไฟล์ตัวที่ต้องการเท่านั้น ส่วนตัวอื่นฯให้ทำงานได้ปกติเหมือนเดีม
ผมต้องทำยังไง หรือ ต้องแก้ code เพิ่มยังไง
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#9

Post by snasui »

:D Code ที่เขียนมาทำงานได้ในเครื่องผมครับ

เปิดไฟล์โปรแกรมไม่สามารถจะคัดลอกหรือวางได้ เปิดไฟล์อื่น คัดลอกหรือวางได้ปกติ

คัดลอกจากไฟล์อื่นมาวางที่ไฟล์โปรแกรม วางไม่ได้เพราะไม่มีเมนูให้วางครับ
Xengsue
Member
Member
Posts: 84
Joined: Fri Jun 23, 2017 7:57 pm

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#10

Post by Xengsue »

snasui wrote: Wed May 30, 2018 10:56 pm :D Code ที่เขียนมาทำงานได้ในเครื่องผมครับ

เปิดไฟล์โปรแกรมไม่สามารถจะคัดลอกหรือวางได้ เปิดไฟล์อื่น คัดลอกหรือวางได้ปกติ

คัดลอกจากไฟล์อื่นมาวางที่ไฟล์โปรแกรม วางไม่ได้เพราะไม่มีเมนูให้วางครับ
แปลกมากถ้าเป็นแบบอาจารยบอกผมคงต้องเช็กโปรแกรมผมดูแล้วละ เพราะว่า ที่ของผมมันสามารถวางได้ทุกวิธีเลยครับ ผมถึงได้เข้ามาถามดู แต่ผมได้ลองใช้ 2007 และ 2013 เขียนผลก็สามารถวางได้หมดทุกวิธีเลยนะ
Last edited by Xengsue on Wed May 30, 2018 11:11 pm, edited 1 time in total.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#11

Post by snasui »

:D ผมทดสอบด้วย Excel 2010 64bit บน Windows 7 ครับ

ลองดูไฟล์นี้ว่าทำงานได้ตรงความต้องการหรือไม่ครับ
Attachments
DisableCopyPaste.xlsm
DisableCutCopyPaste
(19.37 KiB) Downloaded 12 times
Xengsue
Member
Member
Posts: 84
Joined: Fri Jun 23, 2017 7:57 pm

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#12

Post by Xengsue »

snasui wrote: Wed May 30, 2018 11:09 pm :D ผมทดสอบด้วย Excel 2010 64bit บน Windows 7 ครับ

ลองดูไฟล์นี้ว่าทำงานได้ตรงความต้องการหรือไม่ครับ
ติดปัญหาแบบเดียวเลยครับ
ภายในไฟล์ตัวที่อาจารยให้มามันปิด copy or cut and paste ได้ แต่พอ copy or cut จากที่อื่นมามันสามารถวางได้ทุกวิธีเหมือนกันครับ
Xengsue
Member
Member
Posts: 84
Joined: Fri Jun 23, 2017 7:57 pm

Re: code vba ห้ามไม่ให้คัดลอกข้อมูลมาวางลงใน excel

#13

Post by Xengsue »

เดียวถ้าผมว่างผมจะถ่ายรูปหน้าจอมาให้อาจารยดูว่าผลตรงกันไหม หรือ ต่างกันยังไงจะได้หาคำตอบถูก
Post Reply