Làm sao để không cho Paste nhưng vẫn sửa được dữ liệu trong một vùng

Liên hệ QC

phanminhphuong

Thành viên hoạt động
Tham gia
26/7/13
Bài viết
127
Được thích
68
Các bạn cho hỏi: Có cách nào không cho Paste vào vùng A2:C20 của Sheet1 không?- Không dùng Code Vba- Không cho paste vào vùng đó nhưng vẫn sửa thủ công được
 
Lần chỉnh sửa cuối:
Dùng VBA thì còn có thể, chứ nếu không cho dùng VBA thì nghe khó nhai à nha.Nếu dùng VBA thì bạn có thể tham khảo topic sau: Cấm không cho copy và paste
Không dùng được Vba vì theo yêu cầu đặc biệt ở cơ quan mình chỉ được dùng định dạng xlsx thôi. File đó sẽ copy cho nhiều nhân viên và yêu cầu họ điền 1 vùng dữ liệu = nhập thủ công - ko cho gian lận copy - paste.Vậy có giải pháp nào ko dùng Vba mà thực hiên được yêu cầu này không?
 
Lần chỉnh sửa cuối:
Không dùng được Vba vì theo yêu cầu đặc biệt ở cơ quan mình chỉ được dùng định dạng xlsx thôi. File đó sẽ copy cho nhiều nhân viên và yêu cầu họ điền 1 vùng dữ liệu = nhập thủ công - ko cho gian lận copy - paste.Vậy có giải pháp nào ko dùng Vba mà thực hiên được yêu cầu này không?
Không có đâu. Với yêu cầu của bạn hoặc là dùng VBA hoặc là thay đổi yêu cầu
 
Không có đâu. Với yêu cầu của bạn hoặc là dùng VBA hoặc là thay đổi yêu cầu
Hic, vậy la tèo rồi. Tại sao excel khong có thêm lựa chọn protect không chô paste nhưng vẫn sửa thu công được thì tốt nhỉ ???Cảm ơn các bạn đã tư vấn.
 
Lần chỉnh sửa cuối:
Hic, vậy la tèo rồi. Tại sao excel khong có thêm lựa chọn protect không chô paste nhưng vẫn sửa thu công được thì tốt nhỉ ???Cảm ơn các bạn đã tư vấn.

1 triệu người dùng thì 1 triệu người có thể có những nhu cầu cá nhân như bạn thì làm sao Excel có thể thỏa mãn được?
Cái mà bạn muốn tôi nghĩ (mới nghĩ thôi) có thể thực hiện được nhưng bạn tự giới hạn mình rồi than phiền? Kiểu như không cho dùng tay dùng chân nhưng xoay sở làm sao vẫn châm thuốc rót bia gắp đồ nhậu được?
 
1 triệu người dùng thì 1 triệu người có thể có những nhu cầu cá nhân như bạn thì làm sao Excel có thể thỏa mãn được?
Cái mà bạn muốn tôi nghĩ (mới nghĩ thôi) có thể thực hiện được nhưng bạn tự giới hạn mình rồi than phiền? Kiểu như không cho dùng tay dùng chân nhưng xoay sở làm sao vẫn châm thuốc rót bia gắp đồ nhậu được?
Dạ vâng. Cảm ơn anh siwtom. Tại vì thấy các bạn nói ko thể sửa được nên em nói vui vậy chứ em cũng nghĩ là hết nước rồi. Nếu anh có ý tưởng nào có thể trợ giúp xin vui lòng cho e biết để học hỏi. Tks anh
 
Dạ vâng. Cảm ơn anh siwtom. Tại vì thấy các bạn nói ko thể sửa được nên em nói vui vậy chứ em cũng nghĩ là hết nước rồi. Nếu anh có ý tưởng nào có thể trợ giúp xin vui lòng cho e biết để học hỏi. Tks anh

Ơ, tôi có biết cách đâu?
Thấy bạn quanghai1969 nói là "Với yêu cầu của bạn hoặc là dùng VBA" nên tôi nghĩ là làm được thôi. Bạn cứ "bám" anh quanghai1969 mà "đòi bằng được".
 
Ơ, tôi có biết cách đâu?
Thấy bạn quanghai1969 nói là "Với yêu cầu của bạn hoặc là dùng VBA" nên tôi nghĩ là làm được thôi. Bạn cứ "bám" anh quanghai1969 mà "đòi bằng được".
Nếu dùng VBA thì theo link tại bài #2 của bạn nghiaphuc thì làm được rồi anh ah. Cơ quan em lại chỉ cho dùng file này với định dạng xlsx thế mới buồn chứ.
Dù sao cũng cảm ơn mọi người đã tư vấn để còn biết tìm hướng khác mà làm chứ ko biết gì cứ như con thiêu thân lao vào đống lửa thì chết dở! Tks
 
Nếu dùng VBA thì theo link tại bài #2 của bạn nghiaphuc thì làm được rồi anh ah. Cơ quan em lại chỉ cho dùng file này với định dạng xlsx thế mới buồn chứ.
Dù sao cũng cảm ơn mọi người đã tư vấn để còn biết tìm hướng khác mà làm chứ ko biết gì cứ như con thiêu thân lao vào đống lửa thì chết dở! Tks

Định dạng xlsx cũng không hẳn không dùng được VBA. Cho code vào AddIn là được rồi
 
Định dạng xlsx cũng không hẳn không dùng được VBA. Cho code vào AddIn là được rồi
Chắc chuyển AddIn chỉ tiện dùng cho máy mình thôi anh à vì rất nhiều người (ở chỗ em) không biết/ ngại dùng/ ngại thay đổi... Hic. Ước gì có lựa chọn Protect sheet chỉ Protect ko cho Paste thì tốt, 1 số chỗ bắt nhập thủ công hết... --=0 Nói vui vậy thôi chứ em phải nghiên cứu tìm cách khác vậy. Cám ơn mọi người !
 
Chắc chuyển AddIn chỉ tiện dùng cho máy mình thôi anh à vì rất nhiều người (ở chỗ em) không biết/ ngại dùng/ ngại thay đổi...

Vậy thì cái "chỉ cho dùng xlsx" là vì vd. định dạng xlsm nó có trong tên cái "m" nhìn ghét quá hay mục đích thực là không cho dùng VBA? Vì addin chẳng qua cũng là code hoặc load DLL. Còn nếu chỉ thích xlsx vì tên nó đẹp còn vẫn được dùng code thì bạn có thể viết addin mà người dùng không phải thao tác, tương tác gì với nó mà. Chỉ duy nhất là thêm cái addin đó vào. Vậy thì cái "không biết" kia không còn là lý do nữa.

Ngoài ra câu "nhập thủ công - ko cho gian lận copy - paste" cho thấy là bạn muốn tìm biện pháp chống "kẻ gian". Vì người có tính kỷ luật thì chỉ cần nói: "Phải nhập thủ công, không được copy/paste" là được.
Tóm lại phải tìm cách mà "kẻ gian" bất lực, không "lách luật" được. Vậy thì addin cũng loại vì addin kẻ gian sẽ remove trong thời gian nhập liệu. Vì đơn giản là họ cố tình "lách luật" mà.
 
Lần chỉnh sửa cuối:
Ngoài ra câu "nhập thủ công - ko cho gian lận copy - paste" cho thấy là bạn muốn tìm biện pháp chống "kẻ gian". Vì người có tính kỷ luật thì chỉ cần nói: "Phải nhập thủ công, không được copy/paste" là được.
Tóm lại phải tìm cách mà "kẻ gian" bất lực, không "lách luật" được. Vậy thì addin cũng loại vì addin kẻ gian sẽ remove trong thời gian nhập liệu. Vì đơn giản là họ cố tình "lách luật" mà.
Dạ vâng. Thực sự là e đang tìm xem có cách nào chống kẻ gian "toàn diện" không mà không dùng Vba trong file.
Có 1 ý tưởng thế này:
- Mình chuyển đôi file abc.xlsx thế nào đó thành file tự chạy (icon vẫn là xlsx)
- Khi chạy nó mới bung file abc.xlsx thực ra đồng thời chạy code chống Paste (từ Clipboad) - có thể là can thiệp vào Registry
- Khi đóng file thì khôi phục mặc định
Có thể như thế không ạ? Nếu được mong các bạn vui lòng hướng dẫn
 
Lần chỉnh sửa cuối:
Dạ vâng. Thực sự là e đang tìm xem có cách nào chống kẻ gian "toàn diện" không mà không dùng Vba trong file.
Có 1 ý tưởng thế này:
- Mình chuyển đôi file abc.xlsx thế nào đó thành file tự chạy (icon vẫn là xlsx)
- Khi chạy nó mới bung file abc.xlsx thực ra đồng thời chạy code chống Paste (từ Clipboad) - có thể là can thiệp vào Registry
- Khi đóng file thì khôi phục mặc định
Có thể như thế không ạ? Nếu được mong các bạn vui lòng hướng dẫn


Theo tôi chỗ đỏ đỏ có mâu thuẫn với nhau. Bạn giải thích rõ ràng nhé.
Tôi lặp lại câu hỏi: xlsx vì sếp thấy nó đẹp hay mục đích thực là không cho dùng code?
Ngoài ra chỗ xanh xanh phải hiểu như thế nào? Vd. tên là abc.xlsx nhưng thực chất lõi là tập tin EXE? Nếu thế thì bạn đang lách luật do sếp đặt ra? Hay là "không dùng Vba trong file" có nghĩa là không dùng VBA chỉ trong tập tin cụ thể "này" còn trong các tập tin khác có quyền dùng VBA, xlsm?

Còn câu "bung file abc.xlsx thực ra đồng thời chạy code chống Paste " cụ thể là thế nào? XLSX không có code vậy "đồng thời chạy code" là chạy code nào, của ai?
Nói cho cùng chống kẻ gian hơi bị khó. addin có thể remove trong thời gian nhập liệu. Code trong tập tin có thể thay đổi để "lách" ...
Làm được hay không thì trước hết vẫn phải phát biểu "bài Toán" thật chính xác.
 
Theo tôi chỗ đỏ đỏ có mâu thuẫn với nhau. Bạn giải thích rõ ràng nhé.
Tôi lặp lại câu hỏi: xlsx vì sếp thấy nó đẹp hay mục đích thực là không cho dùng code?
Ngoài ra chỗ xanh xanh phải hiểu như thế nào? Vd. tên là abc.xlsx nhưng thực chất lõi là tập tin EXE? Nếu thế thì bạn đang lách luật do sếp đặt ra? Hay là "không dùng Vba trong file" có nghĩa là không dùng VBA chỉ trong tập tin cụ thể "này" còn trong các tập tin khác có quyền dùng VBA, xlsm?

Còn câu "bung file abc.xlsx thực ra đồng thời chạy code chống Paste " cụ thể là thế nào? XLSX không có code vậy "đồng thời chạy code" là chạy code nào, của ai?
Nói cho cùng chống kẻ gian hơi bị khó. addin có thể remove trong thời gian nhập liệu. Code trong tập tin có thể thay đổi để "lách" ...
Làm được hay không thì trước hết vẫn phải phát biểu "bài Toán" thật chính xác.
Hic, xem lại #13 thì thấy ý tưởng mình viết thật dở tệ ...
- Xlsx sếp thích vừa là vì đẹp (định dạng mới, dung lượng ít hơn xls...) & vừa là ko cho dùng code

Vấn đề của em là như thế này:
- Bây giờ tạm bỏ qua yêu cầu file xlsx của sếp, dùng xls cũng được
- Nhiệm vụ của em là thu thập file cùng định dạng của khoảng 30 người. Mà file phải điền = tay mới đúng được định dạng yêu cầu trong đó (copy/paste là hỏng ngay) sau đó mới upload được lên web nội bộ. Nếu sếp cần thì em chuyển file sang xlsx rồi gửi lại cho sếp sau.
- Nếu dùng xls và cho Code vào thì nhân viên vẫn có thể lách luật disable macro để Paste thì sau đó mình phải tìm từng ô để sửa thì hic hic
- Vậy nếu gửi cho nhân viên file xls đó thì có cách nào kể cả họ disable macro ko chạy code thì khi mở file này (chỉ file này) mình vẫn ko cho họ dùng chức năng Paste (từ Clipboad) hay không? Khi đóng file này lại thì lại thiết lập Copy/Paste bình thường.
 
Lần chỉnh sửa cuối:
Hic, xem lại #13 thì thấy ý tưởng mình viết thật dở tệ ...
- Xlsx sếp thích vừa là vì đẹp (định dạng mới, dung lượng ít hơn xls...) & vừa là ko cho dùng code

Vấn đề của em là như thế này:
- Bây giờ tạm bỏ qua yêu cầu file xlsx của sếp, dùng xls cũng được
- Nhiệm vụ của em là thu thập file cùng định dạng của khoảng 30 người. Mà file phải điền = tay mới đúng được định dạng yêu cầu trong đó (copy/paste là hỏng ngay) sau đó mới upload được lên web nội bộ. Nếu sếp cần thì em chuyển file sang xlsx rồi gửi lại cho sếp sau.
- Nếu dùng xls và cho Code vào thì nhân viên vẫn có thể lách luật disable macro để Paste thì sau đó mình phải tìm từng ô để sửa thì hic hic
- Vậy nếu gửi cho nhân viên file xls đó thì có cách nào kể cả họ disable macro ko chạy code thì khi mở file này (chỉ file này) mình vẫn ko cho họ dùng chức năng Paste (từ Clipboad) hay không? Khi đóng file này lại thì lại thiết lập Copy/Paste bình thường.
Nếu vì đẹp thì .xlsm cũng đẹp vậy. Còn vừa muốn đẹp, vừa muốn không cho dùng code, vừa muốn không cho Copy/Paste thì yêu cầu có vẻ cao quá.
Đọc chỗ màu đỏ thì có vẻ bạn không muốn cho Copy/Paste là vì vấn đề định dạng đã thiết lập từ trước. Nếu đúng như vậy thì bạn có thể tham khảo topic sau: Có đoạn code nào biến mọi thao tác dán thành Paste Values không?
 
Hic, xem lại #13 thì thấy ý tưởng mình viết thật dở tệ ...
- Xlsx sếp thích vừa là vì đẹp (định dạng mới, dung lượng ít hơn xls...) & vừa là ko cho dùng code

Vấn đề của em là như thế này:
- Bây giờ tạm bỏ qua yêu cầu file xlsx của sếp, dùng xls cũng được
- Nhiệm vụ của em là thu thập file cùng định dạng của khoảng 30 người. Mà file phải điền = tay mới đúng được định dạng yêu cầu trong đó (copy/paste là hỏng ngay) sau đó mới upload được lên web nội bộ. Nếu sếp cần thì em chuyển file sang xlsx rồi gửi lại cho sếp sau.
- Nếu dùng xls và cho Code vào thì nhân viên vẫn có thể lách luật disable macro để Paste thì sau đó mình phải tìm từng ô để sửa thì hic hic
- Vậy nếu gửi cho nhân viên file xls đó thì có cách nào kể cả họ disable macro ko chạy code thì khi mở file này (chỉ file này) mình vẫn ko cho họ dùng chức năng Paste (từ Clipboad) hay không? Khi đóng file này lại thì lại thiết lập Copy/Paste bình thường.

Bạn nói về định dạng gì đó nên tôi nghĩ là như bạn nghiaphuc nói trong bài #17. Vì tôi vẫn chưa hình dung được lý do chính đáng khác mà bạn cấm người ta Paste.
------------
Nếu chỉ để bàn luận cho vui thì thế này ...

Nói cho cùng thì bạn chỉ phải chống Paste.
Tôi nghĩ rằng có thể có nhiều cách chống Paste.
Hôm nay ta dùng tà đạo. Code cực kỳ đơn giản, không biết tôi đã lường hết các trường hợp chưa.

Mã:
[COLOR=#0000ff]code ThisWorkbook[/COLOR]
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'   dong Clipboard vi co the tap tin duoc dong khi co o trong vung "cam" dang duoc chon, tuc Clipboard dang duoc mo
    CloseClipboard
End Sub

Private Sub Workbook_Open()
'   o luc "chao buoi sang" thi chon o ngoai vung cam
    Sheets("Sheet1").Range("A1").Select
End Sub

[COLOR=#0000ff]code Sheet1[/COLOR]
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'    dong Clipboard bat luan dang mo hoac dang dong. Hoac dung flag blocked (boolean)
    CloseClipboard
    If Not Intersect(Target, [A2:C20]) Is Nothing Then
'       neu chon o trong vung "cam" thi mo Clipboard va xoa Clipboard
        OpenClipboard 0
        EmptyClipboard
    End If
End Sub

[COLOR=#0000ff]code Module1[/COLOR]
Public Declare Function OpenClipboard Lib "user32.dll" (ByVal hwnd As Long) As Long
Public Declare Function CloseClipboard Lib "user32.dll" () As Long
Public Declare Function EmptyClipboard Lib "user32.dll" () As Long

Khi chọn ô bất kỳ, kể cả các ô trong vùng [A2: C20], thì luôn có thể copy. Nhưng nếu chọn ô trong
vùng [A2:C20] thì không Paste được. Kể cả khi sau khi chọn ô trong Excel "kẻ gian" quay sang vd. notepad copy một đoạn rồi trở về Excel nhấn Ctrl + V.
---------------
Ở trên là code chống Paste. "Kẻ gian" có thể nghĩ ra nhiều mẹo để lách luật.
Ví dụ disable macro. Thế này thì code tèo rồi. Tất nhiên có thể viết code Enable macro nhưng code đó không thể đặt trong tập tin vì sẽ tèo khi disable macro. Vậy phải đặt "ở ngoài".

Tôi nghĩ là ta sẽ viết 1 EXE gói trong mình nó tập tin XLS. Khi EXE được kích hoạt thì: Enable macro nếu đang disable macro --> bung XLS ra đĩa --> khởi động XLS.

Như thế thì đòn "Disable macro" đã bị vô hiệu hóa. "Kẻ gian" lại ra tiếp đòn hiểm: đóng XLS --> disable macro --> không kích hoạt EXE (vì nó sẽ Enable macro) --> kích hoạt XLS đã được ghi trên đĩa --> code sẽ tèo.

Như vậy ta phải lường hết được những đòn của "kẻ gian" để chống lại. Bạn sẽ thấy là code để chống Paste thì rất ngắn nhưng code để ra đòn chống lại những đòn của "kẻ gian" mới phức tạp.

Nếu dùng EXE chấp nhận được thì tôi đề nghị viết trong VB6. Bạn thấy chấp nhận được thì cho mọi người biết và chúng ta - GPE - sẽ cùng nhau viết cái EXE này. Rất có thể bạn sẽ phải cài VB để compile project. Vì sao? Vì để gói XLS trong EXE thì phải có XLS. Nếu bạn cung cấp XLS thì người khác sẽ compile project hộ bạn nhưng nếu XLS có thông tin nội bộ mật thì lúc đó bạn sẽ phải tự compile, tức phải cài VB.
 
Tôi làm việc với những cơ quan, phòng ban không cho dùng macro, kể cả add-ins là chuyện thường tình. Nhưng đây là lần đầu tiên thấy trường hợp cấm không cho copy/paste.

Theo tôi thấy thì luật "không cho" này là do bạn định ra để bảo vệ định dạng của mình (?) Yêu cầu giải quyết vấn đề chưa hẳn đã thế. Đó là mộtn yêu cầu vừa khó khăn thực hiên (phải làm nhiều chuyện) mà lại rất dễ lách qua (chỉ cần ngưòi thông minh một chút là gạt được)

Cách duy nhất để giữ nguyên định dạng của mình là không chấp nhận nhập liệu trực tiếp. Trường hợp của bạn bắt buộc phải nhận files thô và dùng phần mềm chép lại.
 
Cảm ơn mọi người đã giúp đỡ!

Bây giờ em mới rỗi 1 lúc để nói thêm về vấn đề này:
1) Ở cơ quan em đang làm nhiều việc & gồm có công tác khai báo Hải Quan (HQ) cho tàu biển.
2) Khi có tàu đến/ rời cảng em sẽ phải khai HQ trên mạng bằng file Excel đính kèm. File này nhân viên khác phải gửi cho em và phải điền bằng tay 03 Sheets (em đang để Visible - vùng màu vàng). Nếu nhân viên Copy Paste là hỏng ngay/ không upload được lên mạng Hải Quan. Không biết tại sao, đã kiến nghị nhiều lần nhưng không sửa được.
NHƯ VẬY NHẤT THIẾT VÙNG MÀU VÀNG TRONG 03 SHEETS ĐÓ PHẢI ĐIỀN THỦ CÔNG
3) Sau đó em phải gửi file xlsx (nếu nhân viên dùng xls thì mình chuyển xlsx) rồi gửi mail cho sếp HQ.

Vậy có cách nào để cấm/ không cho nhân viên Copy - Paste trong vùng màu vàng của 03 Sheets không. Nếu họ không điền = tay mà copy paste => Không upload được mạng HQ => Khi upload nó sẽ báo chính xác lỗi ở đâu (Sheet nào, dòng nao, cột nào) nên nhiều khi em phải đánh lại rất nhiều Cells :( Hic hic
-------------------------------------------------

Tôi nghĩ là ta sẽ viết 1 EXE gói trong mình nó tập tin XLS. Khi EXE được kích hoạt thì: Enable macro nếu đang disable macro --> bung XLS ra đĩa --> khởi động XLS.

Như thế thì đòn "Disable macro" đã bị vô hiệu hóa. "
Kẻ gian" lại ra tiếp đòn hiểm: đóng XLS --> disable macro --> không kích hoạt EXE (vì nó sẽ Enable macro) --> kích hoạt XLS đã được ghi trên đĩa --> code sẽ tèo.

Như vậy ta phải lường hết được những đòn của "kẻ gian" để chống lại. Bạn sẽ thấy là code để chống Paste thì rất ngắn nhưng code để ra đòn chống lại những đòn của "kẻ gian" mới phức tạp.

Nếu dùng EXE chấp nhận được thì tôi đề nghị viết trong VB6. Bạn thấy chấp nhận được thì cho mọi người biết và chúng ta - GPE - sẽ cùng nhau viết cái EXE này. Rất có thể bạn sẽ phải cài VB để compile project. Vì sao? Vì để gói XLS trong EXE thì phải có XLS. Nếu bạn cung cấp XLS thì người khác sẽ compile project hộ bạn nhưng nếu XLS có thông tin nội bộ mật thì lúc đó bạn sẽ phải tự compile, tức phải cài VB.
Anh có thể hướng dẫn em cách này được không? Tks anh
 

File đính kèm

  • Customs Formality Requires.zip
    37.4 KB · Đọc: 9
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom