• 쇼핑몰
  • 커뮤니티
  • 북마크

vb6.0/vba




[vba] [vba] 엑셀 관리자 권한으로 실행하기

하나를하더라도최선을
2019.07.08 00:03 2,737 0

본문




간혹 엑셀 프로그램이 "관리자 권한"으로 실행되어야 할 때가 있습니다.
아래와 같은 방법으로 vba로 처리가 가능합니다.

#If VBA7 Then
    Public Declare PtrSafe Function IsUserAnAdmin Lib "shell32" () As Long
#Else
    Public Declare Function IsUserAnAdmin Lib "shell32" () As Long
#End If
 
 
Sub Auto_Open(Optional str As Boolean = False)
    CheckedAdmin
    program1472
End Sub
 
Sub CheckedAdmin(Optional str As Boolean = False)
    If IsUserAnAdmin() Then
        '// 관리자 권한으로 실행
    Else
'       CreateObject("WScript.Shell").RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\ /v C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "WINXPSP3", "REG_SZ"
        CreateObject("WScript.Shell").Run "REG.EXE ADD ""HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers""" & " /v """ & Application.Path & "\EXCEL.EXE"" /t REG_SZ /d ""RUNASADMIN"" /f"01
        MsgBox "프로그램을 종료합니다." & vbNewLine & "" & vbNewLine & _
            "프로그램은 관리자 권한으로 실행되어야 합니다." & vbNewLine & vbNewLine & _
            "1. 확인을 누르면 프로그램이 종료됩니다." & vbNewLine & _
            "2. 파일을 다시 실행합니다." & vbNewLine & _
            "3. 관리자 권한을 허용해 주세요" & vbNewLine & "" & vbNewLine & "" & vbNewLine & " - END - "
        AppQuit
    End If
End Sub
 
Sub RegDelete(Optional str As Boolean = False)
'   IMPORT,DELETE
    CreateObject("WScript.Shell").Run "REG.EXE DELETE ""HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers""" & " /v """ & Application.Path & "\EXCEL.EXE"" /f"01
    MsgBox "프로그램을 다시 실행해 주세요.", , "관리자권한 제거"
    ThisWorkbook.Save
    AppQuit
End Sub
 
Sub AppQuit(Optional str As Boolean = False)
    Application.DisplayAlerts = False
    Application.Quit
    End
End Sub
 
Sub program1472(Optional str As Boolean = False)
    '// 이곳에 원하는 프로그래밍
End Sub

*꿀팁:)
여기서 "Optional str As Boolean = False"를 넣는 것은 매크로 프로시저가
보이지 않게 하기 위해서입니다.
매크로 보기 메뉴에서 보이는 게 싫을 경우 인자 값을 주면 안 보이게 됩니다.
버튼 및 도형에 매크로 연결은 아무런 지장이 없이 사용할 수 있습니다.

Auto_Open 프로시저 역시 인자 값을 주게 되면 매크로 보기에서 보이지 않고 파일 실행 시 실행됩니다.






댓글목록 0

등록된 댓글이 없습니다.