엑셀 매크로 VBA를 사용해서 HWP 일괄 암호 부여중입니다.

Sub EncryptHwpFile(hwpApp As Object, filePath As String, password As String)
On Error Resume Next

' 파일 열기
hwpApp.Open filePath, "HWP", "forceopen:true;password:"

' 디버깅 메시지 출력
Debug.Print "파일 열기 시도: " & filePath

If Err.Number <> 0 Then
    MsgBox "파일 열기 오류: " & Err.Description, vbCritical
    Err.Clear
    Exit Sub
End If

' 암호화 설정
Dim action As Object
Dim setObj As Object
Set action = hwpApp.CreateAction("FilePassword")
Set setObj = hwpApp.CreateSet("Password")
action.GetDefault setObj

' 사용자가 입력한 암호 설정
setObj.SetItem "String", password
setObj.SetItem "Ask", False

' 디버깅 메시지 출력
Debug.Print "적용할 암호: " & password

' 액션 실행
action.Execute setObj

' 파일 저장
hwpApp.Save filePath

' 디버깅 메시지 출력
Debug.Print "파일 저장 시도: " & filePath

' 오류 처리
If Err.Number <> 0 Then
    MsgBox "파일 " & filePath & " 처리 중 오류 발생: " & Err.Description, vbCritical
    Err.Clear
End If

End Sub

이 코딩인데 파이썬으로는 암호를 제대로 걸었습니다.
헌데 엑셀로 암호를거니 작동은 잘되는데
제가 입력한 암호대로 안넣고 있습니다.
암호저장 완료후 저장을 누르고 다시 열때 나오는 암호에 입력한 암호를 넣으면 틀리다고 나오네요.
’ 암호화 설정
Dim action As Object
Dim setObj As Object
Set action = hwpApp.CreateAction(“FilePassword”)
Set setObj = hwpApp.CreateSet(“Password”)
action.GetDefault setObj

setObj.SetItem "String", password
setObj.SetItem "Ask", False

action.Execute setObj

이부분에서 뭔가를 해줘야할거 같은데 쳇 지피티도 감을 못잡네요…ㅠㅠ
도움 부탁드립니다.

2개의 좋아요

안녕하세요.

API 사용 방법이 잘못 되었습니다.
아래와 같이 수정하시면 될 것 같습니다.

Dim action As Object
Dim setObj As Object

Set action = hwpApp.CreateAction("FilePassword")
//Set setObj = hwpApp.CreateSet("Password")
Set setObj = action.CreateSet();

action.GetDefault setObj
setObj.SetItem "String", password
setObj.SetItem "Ask", False

action.Execute setObj

// hwpApp.Save filePath
hwpApp.Save True 
// or hwpApp.SaveAs filePath, "HWP", ""

감사합니다.

1개의 좋아요