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

Liên hệ QC

Người dùng đang xem chủ đề này

phanminhphuong

Thành viên hoạt động
Tham gia
26/7/13
Bài viết
127
Được thích
69
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

Lần chỉnh sửa cuối:
... 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 ...

Theo nguyên tắc tâm lý, cái gì con người thấy thuận tiện thì họ làm. Bạn không có cách nào cấm họ cả, ngoại trừ cách hăm doạ trừng phạt.

Tại bạn cứ phải tự đánh lại cho nên người ta làm tới. Nếu bạn copy cái trang báo lỗi gởi cho sếp (và CC cho người nhập) thì sếp bạn sẽ có cách kỷ luật nhân viên này.

Vả lại, chuyện copy/paste (nếu dữ liệu đúng) thì đáng lẽ phải khuyến khich chứ? Bởi vì phải gõ từng ô có khả năng lỗi rất cao.

Nếu là tôi thì tôi giữ bản gốc, gởi một bản phụ cho nhân viên người ta vào dữ liệu - gõ hay copy/paste gì đó mặc họ. Xong tôi dùng code VBA trong một file nào đó của tôi, mở bản phụ, lấy dữ liệu chép vào bản gôc, và sau đó thì xoá bản phụ (hoặc đổi sang một folder nào đó để dành minh chứng sau này). Đối với bên HQ họ chỉ cần biết file gốc. Đối với sếp, bạn đâu có cần phải báo cáo là mình có một file xlsm.
 
Theo nguyên tắc tâm lý, cái gì con người thấy thuận tiện thì họ làm. Bạn không có cách nào cấm họ cả, ngoại trừ cách hăm doạ trừng phạt.

Tại bạn cứ phải tự đánh lại cho nên người ta làm tới. Nếu bạn copy cái trang báo lỗi gởi cho sếp (và CC cho người nhập) thì sếp bạn sẽ có cách kỷ luật nhân viên này.

Vả lại, chuyện copy/paste (nếu dữ liệu đúng) thì đáng lẽ phải khuyến khich chứ? Bởi vì phải gõ từng ô có khả năng lỗi rất cao.

Nếu là tôi thì tôi giữ bản gốc, gởi một bản phụ cho nhân viên người ta vào dữ liệu - gõ hay copy/paste gì đó mặc họ. Xong tôi dùng code VBA trong một file nào đó của tôi, mở bản phụ, lấy dữ liệu chép vào bản gôc, và sau đó thì xoá bản phụ (hoặc đổi sang một folder nào đó để dành minh chứng sau này). Đối với bên HQ họ chỉ cần biết file gốc. Đối với sếp, bạn đâu có cần phải báo cáo là mình có một file xlsm.
Dạ vâng, Cám ơn anh!
- Em cũng thấy rằng yêu cầu này hơi khó thực hiện. Tuy nhiên Excel cũng chỉ là công cụ giúp việc cho con người, mình có phương án nào để "ép" họ thực hiện được đúng yêu cầu thì tốt, vì điền bằng tay cũng không có gì quá khó khăn (sai 1 tí cũng OK vì nhiều khi chính quyền không kiểm tra gắt gao, nếu họ kiểm tra trên mạng HQ có sai thì sửa tí trên mạng hoặc file Excel upload lại là xong) mà nhân viên lại có nhiều thời gian hơn mình nhiều (mặc dù mình cũng là nhân viên) Hic.
- Em đã thử làm cách của anh dòng màu đỏ (nhân viên đưa cho mình file đã copy/paste tất nhiên upload báo lỗi - Mình dùng Code VBA lấy dữ liệu vào file gốc và ĐỂ ĐÚNG ĐỊNH DẠNG FILE GỐC thì upload vẫn lỗi) nhiều lần nhưng mạng Hải Quan cũng không upload được. Không thể hiểu nổi. Chắc là phải chịu thôi.
Cảm ơn mọi người đã giúp đỡ!
 
Lần chỉnh sửa cuố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
-------------------------------------------------


Anh có thể hướng dẫn em cách này được không? Tks anh


Như vậy thì những người kia không phải kẻ gian nên họ sẽ chả bỏ nhiều công để "lách luật". Trước kia do có khả năng Paste nên họ Paste cho thuận tiện hơn thôi. Nếu mình làm khó thì họ thôi chứ họ không bỏ công để "ra đòn".
Nếu thế thì ta cũng không cần cẩn thận quá, chỉ làm khó cho họ thấy gõ tay còn sướng hơn đi tìm cách lách luật.
Tôi cũng có việc của mình. Vài tiếng nữa tôi sẽ xét vấn đề EXE.
 
Tại sao bạn không tìm hiểu lý do file có paste với file sửa tay khác nhau gì để dẫn đến upload bị lỗi, theo tôi việc sửa dữ liệu trong một ô (cell) của Excel, thì chương trình chỉ hiểu là giá trị sửa, chứ nó không ghi lại số ấy bạn sửa bằng tay hay paste!
 
Tại sao bạn không tìm hiểu lý do file có paste với file sửa tay khác nhau gì để dẫn đến upload bị lỗi, theo tôi việc sửa dữ liệu trong một ô (cell) của Excel, thì chương trình chỉ hiểu là giá trị sửa, chứ nó không ghi lại số ấy bạn sửa bằng tay hay paste!
Đã thử nhiều lần:
+ Điền = tay thì upload OK
+ Copy/Paste thì không upload được (thử từng loại Standard Paste, Past Value, Paste Formatting...& thử nhiều Option trong Paste Speacial). Mà Paste xong, định dạng lại y như file gốc cũng không upload được.
+ Dùng VBA lấy dữ liệu từ file mà nhân viên Paste (đổi cả định dạng trong VBA luôn cho đúng với file gốc) rồi đưa vào file gốc cũng Not ok
Mình thực sự bó tay nên chắc chỉ còn cách điền thủ công thôi.
------------------------------------------------------------
Vài tiếng nữa tôi sẽ xét vấn đề EXE.
Vâng, em cũng muốn thử xem có giải pháp nào không? Làm phiền anh hướng dẫn thêm.
 
Lần chỉnh sửa cuối:
Vấn đề này tại sao lại không dùng VBA để xử nhỉ?
Viết code Auto_Open và Auto_Close để ép người dùng phải Enable Macro.
AuTo_Close sẽ siêu ẩn cái sheet cần nhập dữ liệu, AuTo_Open sẽ hiện sheet này ra
Vấn đề là chỉ để tôt cho công việc thôi vậy sao phải không cho dùng VBA chứ???
Cơ bản là chỉ sợ người nhập vô tình gây ra lỗi thôi mà.
 
Vấn đề này tại sao lại không dùng VBA để xử nhỉ?
Viết code Auto_Open và Auto_Close để ép người dùng phải Enable Macro.
AuTo_Close sẽ siêu ẩn cái sheet cần nhập dữ liệu, AuTo_Open sẽ hiện sheet này ra
Vấn đề là chỉ để tôt cho công việc thôi vậy sao phải không cho dùng VBA chứ???
Cơ bản là chỉ sợ người nhập vô tình gây ra lỗi thôi mà.
A có thể giải thích rõ hơn dùng Code để "ép" người dùng?
Như bài #25 em đã nói: điền = tay thì OK, còn nếu copy/Paste hoặc code thì kiểu gì cũng ko upload được, kiểm tra nhiều lần cũng ko tìm thấy làm = tay & các cách kia có gì khác nhau mà lại không upload được. Bế tắc quá... Hic hic

Nói chung bây giờ em rất muốn tìm phương án nào đó mà chỉ cho nhập bằng tay. Họ (nhân viên) nhập = tay không có vấn đề gì lớn & 1 file (1 tàu) có thể dùng nhiều lần nên có thể triển khai theo hướng này

Xin cảm ơn!
 
A có thể giải thích rõ hơn dùng Code để "ép" người dùng?
Như bài #25 em đã nói: điền = tay thì OK, còn nếu copy/Paste hoặc code thì kiểu gì cũng ko upload được, kiểm tra nhiều lần cũng ko tìm thấy làm = tay & các cách kia có gì khác nhau mà lại không upload được. Bế tắc quá... Hic hic

Bạn có thể đưa 2 bản Excel lên đây: 1 bản nhập bằng tay và 1 bản đã copy/paste được không?
Biết đâu người ngoài nhìn vào phát hiện được vấn đề thì sao?
Quan điểm của tôi: Làm thì phải làm tận gốc (kiểm tra nguyên nhân vấn đề) chứ tôi ít khi nào thích cái kiểu làm theo "hướng đi" mà người dùng tự cho là đúng
Vậy đi nha!
 
A có thể giải thích rõ hơn dùng Code để "ép" người dùng?
Như bài #25 em đã nói: điền = tay thì OK, còn nếu copy/Paste hoặc code thì kiểu gì cũng ko upload được, kiểm tra nhiều lần cũng ko tìm thấy làm = tay & các cách kia có gì khác nhau mà lại không upload được. Bế tắc quá... Hic hic

Nói chung bây giờ em rất muốn tìm phương án nào đó mà chỉ cho nhập bằng tay. Họ (nhân viên) nhập = tay không có vấn đề gì lớn & 1 file (1 tàu) có thể dùng nhiều lần nên có thể triển khai theo hướng này

Xin cảm ơn!
Thử hướng này xem thế nào. Trong sheet NHAPLIEU vùng màu vàng không dán
 

File đính kèm

Tôi cũng có việc của mình. Vài tiếng nữa tôi sẽ xét vấn đề EXE.

Xin lỗi bạn là tôi đã nhen nhóm nềm hi vọng vô ích.

Bây giờ mới xét kỹ vấn đề thì tôi thấy không đơn giản tí nào. Mục đích chính của ta là đặt một code ở bên ngoài - EXE - để "bật" macro nếu "người ta" disable macro. Chính vì thế mà ta phải cho người ta 1 tập tin duy nhất là EXE, vì cho XLS thì người ta kích hoạt luôn XLS và như thế không có code để bật macro nếu cần thiết. Nhưng cho người ta EXE có nghĩa là phải gói XLS trong EXE rồi sau đó bung ra đĩa thì Excel mới mở được. Một khi đã có XLS trên đĩa rồi thì người ta lại có thể kích hoạt XLS chứ không kích hoạt EXE, và lúc đó không có code nào bật macro nếu cần thiết. Tất nhiên có thể viết code để kiểm tra xem XLS được "người ta" kích hoạt hay do EXE kích hoạt nhưng lúc đó thì lại vẫn "vấn đề" như cũ. Tức nếu cái code "thanh tra" đó đặt trong XLS thì tèo khi họ disable macro còn nếu đặt trong EXE thì do họ kích hoạt luôn XLS chứ không kích hoạt EXE nên code cũng tèo.

Tóm lại bạn nên yêu cầu người ta làm cho đúng. Ai làm không đúng thì báo cáo với sếp. Bạn không trị được người ta nhưng sếp thì chắc chắn trị được.

Hoặc ta tìm nguyên nhân khi Paste dẫn đến sai. Vì Paste thì thực ra chỉ khác gõ bằng tay cái "định dạng" thôi chứ nhỉ?
 
Thử hướng này xem thế nào. Trong sheet NHAPLIEU vùng màu vàng không dán

Code cấm Paste thì không khó và có thể viết nhiều kiểu.

Cái vấn đề đau đầu và viết tốn giấy mực cho tới tận giờ là nếu người ta cố tình lách luật thì người ta sẽ disable macro và toàn bộ code đi teo.

Ngoài ra code

Mã:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [B6:F17]) Is Nothing Then
   Application.CutCopyMode = False
End If
End Sub

chỉ ngăn người ta Paste từ cell nào đó vào vùng "cấm" mà thôi. Còn vẫn Paste được khi: chọn cell trong vùng "cấm" cần Paste --> chuyển sang văn bản có dữ liệu cần copy, vd. notepad, word ... --> copy dữ liệu vào bộ nhớ --> quay lại Excel --> nhấn Ctrl + V hoặc Paste.
 
Cái vấn đề đau đầu và viết tốn giấy mực cho tới tận giờ là nếu người ta cố tình lách luật thì người ta sẽ disable macro và toàn bộ code đi teo.
- Cơ quan em toàn người "mu tít, mù tịt" VBA nên nên số đông chắc là không biết disable marco (tính đến thời điểm này). Tuy nhiên họ dùng máy tính riêng nên chắc phải dùng thủ thuật nào đó để Enable Macro rồi chạy file kèm code Disable Paste from clipboad có được không a? (yêu cầu dùng xlsx là của cơ quan Hải Quan vì sợ bị virus và yêu cầu khác ...)
- Thực ra là cũng góp ý với những nhân viên đó nhiều lần, có báo cáo với sếp nhưng mà toàn "5C" anh ạ (con cháu các cụ cả) nên họ làm cứ lờ lớ lơ, mình "thấp cổ bé họng" toàn "chịu trận", tính dùng kiến thức để trị họ thế mà... hic hic

* GPE đã có ai làm khai hải quan (https://e-manifest.customs.gov.vn) chưa? có thể sẽ hiểu chi tiết file này
- Các anh xem Ví dụ 2 file. File 1 gõ = tay thì upload ok (có hình). File 2 là copy Paste rồi định dạng lại y như file 1 vẫn không upload được (1 số file báo lỗi ngày tháng khi upload mặc dù đã định dạng đúng như file gốc hiện tại em không có ở đây)
- Em kiểm tra nhiều lần thì hình như: khi Paste vào 1 vùng nó sẽ thay đổi định dạng vùng gốc (chắc chắn ko y như vùng gốc được) mình định dạng lại vùng vừa Paste như định dạng gốc thì chương trình không cho upload => Có thể do trang web có vấn đề.
- Đặc biệt là những ô ngày tháng (định dạng ô gốc là Text, nhưng phải gõ theo dạng "DD/MM/YYYY") thì ở dữ liệu nhân viên có thể copy Ô thường có định dạng Date hoặc Customs ("dd/mm/yyyy), khi họ copy vào file gốc e đổi định dạng ô về Text thì cũng không được... Hic hic

Nói chung em thấy yêu cầu của Threat này chắc khó khả thi. Cảm ơn mọi người đã quan tâm cho ý kiến/ ý tưởng. Em sẽ cố nghiên cứu hướng khác xem thế nào. Tks again
 

File đính kèm

Lần chỉnh sửa cuối:
- Cơ quan em toàn người "mu tít, mù tịt" VBA nên nên số đông chắc là không biết disable marco (tính đến thời điểm này). Tuy nhiên họ dùng máy tính riêng nên chắc phải dùng thủ thuật nào đó để Enable Macro rồi chạy file kèm code Disable Paste from clipboad có được không a? (yêu cầu dùng xlsx là của cơ quan Hải Quan vì sợ bị virus và yêu cầu khác ...)
- Thực ra là cũng góp ý với những nhân viên đó nhiều lần, có báo cáo với sếp nhưng mà toàn "5C" anh ạ (con cháu các cụ cả) nên họ làm cứ lờ lớ lơ, mình "thấp cổ bé họng" toàn "chịu trận", tính dùng kiến thức để trị họ thế mà... hic hic

* GPE đã có ai làm khai hải quan (https://e-manifest.customs.gov.vn) chưa? có thể sẽ hiểu chi tiết file này
- Các anh xem Ví dụ 2 file. File 1 gõ = tay thì upload ok (có hình). File 2 là copy Paste rồi định dạng lại y như file 1 vẫn không upload được (1 số file báo lỗi ngày tháng khi upload mặc dù đã định dạng đúng như file gốc hiện tại em không có ở đây)
- Em kiểm tra nhiều lần thì hình như: khi Paste vào 1 vùng nó sẽ thay đổi định dạng vùng gốc (chắc chắn ko y như vùng gốc được) mình định dạng lại vùng vừa Paste như định dạng gốc thì chương trình không cho upload => Có thể do trang web có vấn đề.
- Đặc biệt là những ô ngày tháng (định dạng ô gốc là Text, nhưng phải gõ theo dạng "DD/MM/YYYY") thì ở dữ liệu nhân viên có thể copy Ô thường có định dạng Date hoặc Customs ("dd/mm/yyyy), khi họ copy vào file gốc e đổi định dạng ô về Text thì cũng không được... Hic hic

Nói chung em thấy yêu cầu của Threat này chắc khó khả thi. Cảm ơn mọi người đã quan tâm cho ý kiến/ ý tưởng. Em sẽ cố nghiên cứu hướng khác xem thế nào. Tks again

Như bài #30 tôi đã nói cái Paste nó hơi bị bí hiểm cần xem kỹ.
Còn nếu bạn cứ muốn ép người ta phải enable macro để code khóa Paste chạy được thì cũng có thể thử cách khác.

Bạn protect Sheet có mật khẩu. Có code VBA để mở mật khẩu. Bạn đặt vd. 1 Button trên sheet và gán cho nó macro mở protect. Khi đóng tập tin thì cũng có code để protect lại. Bạn nói với người ta: để nhập liệu thì cần nhấn Button để unprotect. Mà để chạy macro gán cho Button thì "người ta" phải có enable macro. Thế thôi.

Tất nhiên phải đặt mật khẩu cho VBA.

Nói cho cùng người ta cũng có thể tìm cách mở VBA nhưng không phải ai cũng biết và ta chỉ làm khó dễ để người ta thấy là gõ dữ liệu còn sướng hơn tìm cách lách luật mà thôi

Tuy nhiên cách tốt nhất là yêu cầu người ta làm cho đúng. Chứ bắt được họ phải gõ nhưng họ gõ sai thì cũng vứt đi. Họ phải làm đúng thì "nghiệm thu" còn không thì bác bỏ. Người ta đi làm hưởng lương chứ có phải họ bố thí gì đâu mà phải van nài người ta
 
Lần chỉnh sửa cuối:
...
Tuy nhiên cách tốt nhất là yêu cầu người ta làm cho đúng. Chứ bắt được họ phải gõ nhưng họ gõ sai thì cũng vứt đi. Họ phải làm đúng thì "nghiệm thu" còn không thì bác bỏ. Người ta đi làm hưởng lương chứ có phải họ bố thí gì đâu mà phải van nài người ta

Chủ thớt đã từng nói qua, dữ liệu sai một chút cũng không sao.
Rõ ràng trọng tâm của đề bài này là "hình thức mẫu mã" cho đúng, chứ "nội dung" không quan trọng.

Thực ra theo tôi hiểu thì có lẽ cái file chính và cái nguồn người ta copy có một số định dạng gì đó không hợp nhau cho nên lúc copy/paste dữ liệu bị bên nhận hiểu sai. Tuy nhiên tôi không đào sâu hơn nữa vì theo tình huống này chủ thớt không phải muốn tìm giải pháp cho vấn đề của mình. Đương sự đã đặt giải pháp rồi, và chỉ hỏi phương cách thực hiện giải pháp ấy.

Bạn chỉ việc viết code cho chủ thớt thực hiện đúng ý. Còn kiểm soát được hay không chẳng (chưa) thành vấn đề.

Điểm mà tôi không hiểu là nhét một đống code, điều kiện này nọ vào file thì đến lúc upload cho đối tác bên kia lại phải gỡ ra. Nếu không lại có khả năng bị báo lỗi (?)
 

Bài viết mới nhất

Back
Top Bottom