매크로를 사용하여 Excel 스프레드시트의 셀을 비밀번호로 보호할 수 있나요?

매크로를 사용하여 Excel 스프레드시트의 셀을 비밀번호로 보호할 수 있나요?

나는 timeclock으로 설정된 Excel 스프레드 시트를 가지고 있습니다. 직원은 해당 주의 시간 기록 파일을 열고 지정된 위치에 해당 주의 종료 날짜를 입력합니다. 이제부터 입력에는 마우스만 사용됩니다. 직원은 요일에 맞는 셀을 선택하고 펀치 인, 점심 식사, 점심 식사 후 집으로 돌아가는 동작을 선택합니다. 올바른 셀 위에 커서를 놓은 후 작업에 대한 정확한 시간을 채우는 버튼(매크로에 연결된 버튼)을 클릭합니다. 나는 그들이 원하는 감방으로 가서 원하는 시간을 입력하는 것을 어떻게 막는 지 알 수 없습니다. 버튼 매크로의 일부로 비밀번호로 셀 보호를 추가하려고 시도했지만 작동하지 못했습니다. 직원이 시간을 변경할 수 없도록 세포를 보호할 수 있는 방법이 있나요? 아니면 이 모든 것을 함께 수행할 수 있는 더 쉬운 방법이 있습니까?

답변1

사용자는 Excel 파일에 쓸 수 있는 액세스 권한을 갖습니다.

Excel 내에서 이를 기술적으로 적용할 수는 없다고 생각합니다. 내 생각엔 당신이 대체 소프트웨어를 원하는 것 같아요. 그래도 Excel 매크로를 다루는 당신의 기술은 존경스럽습니다.

자세히 설명하자면:

  • 사용자가 셀을 수정할 수 있는 경우 사용자가 단순히 셀을 직접 수정하는 것(값 입력)으로부터는 보호되지 않습니다.
  • 사용자가 셀을 수정할 수 없는 경우 사용자가 값을 입력하는 것만으로는 셀이 보호되지 않지만 매크로에서 올바른 정보가 셀에 기록되도록 할 수도 없습니다.

이는 비밀번호 없이는 읽을 수 없도록 하는 셀 암호화와는 다릅니다.

시중에는 타임카드 소프트웨어가 많이 있는데, 그 중 대부분은 수집된 데이터를 Excel로 내보낼 수 있는 것 같습니다. 내가 당신의 입장이라면 스프레드시트를 넘어 내 시야를 넓힐 것입니다.

답변2

VBA 이벤트 핸들러에 의한 셀 변경을 허용하지 않을 수 있습니다.

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    With Target
        If If Not Intersect(Target, Range("A1:B10")) Is Nothing Then Application.Undo
    End With
    Application.EnableEvents = True
End Sub

VBA 매크로를 통해 셀 값을 설정하면 이 이벤트가 발생하는지 모르겠습니다. 수식으로 인한 변경 사항에는 실행되지 않는다는 것을 알고 있습니다. 그러나 셀을 변경하기 전에 변경 사항을 설정하고 나중에 설정을 해제할 수 있도록 전역 변수를 쉽게 정의할 수 있습니다.

Worksheet_SelectionChange사용자가 셀 내부에 커서를 두는 것을 방지하기 위해 이벤트를 트랩하려고 할 수도 있습니다 . 허용되지 않는 셀의 경우 미리 정의된 셀(예: A1)에 커서 위치를 다시 지정하거나 마지막으로 허용된 커서 위치를 기억하고 위치를 다시 지정하기 위해 좀 더 복잡한 코드를 작성할 수 있습니다.

관련 정보