vba [vba] 엑셀 관리자 권한으로 실행하기
페이지 정보
본문
간혹 엑셀 프로그램이 "관리자 권한"으로 실행되어야 할 때가 있습니다.
아래와 같은 방법으로 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", 0, 1
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", 0, 1
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 프로시저 역시 인자 값을 주게 되면 매크로 보기에서 보이지 않고 파일 실행 시 실행됩니다.
- 이전글[vba] 엑셀 시트를 픽셀처럼 사용하여 폼의 이미지 박스의 이미지를 시트에 그리기 19.07.08
댓글목록
등록된 댓글이 없습니다.