EGTools v3.5.0에 추가된 업데이트 기능의 VBA 소스입니다.
DownloadFromURL함수는 여기를 참고하세요.
다운로드한 파일은 임시로 사용자의 Downloads 폴더에 저장했다가 복사가 완료되면 삭제합니다.
사용중인 파일을 덮어씌우기 위해서 Add-In을 읽기 전용 상태로 바꾸는 것이 필요합니다.
사용자가 작성중인 파일이 있을 경우가 있어 Excel의 재시작은 사용자가 하도록 합니다.
Public Const MyAddIn = "EGTools"
Public LastDocURL As String
Sub UpdateAddIn()
Dim NewFile As String
Dim ThisFullPath As String
If Not ThisWorkbook.IsAddin Then Exit Sub
ThisFullPath = ThisWorkbook.FullName
Application.EnableEvents = False
'// 다운로드할 주소를 지정하는 부분으로 다운로드할 배포파일의 URL을 지정해 줍니다.
If LastDocURL = vbNullString Then getEGToolsVersion
If LastDocURL = vbNullString Then
MsgBox "새 버전을 확인하지 못했습니다."
Exit Sub
End If
'// Registry에서 사용자의 Downloads Folder를 찾음
NewFile = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\{374DE290-123F-4565-9164-39C4925E467B}")
NewFile = Replace(NewFile, "%USERPROFILE%", Environ$("USERPROFILE")) & Application.PathSeparator & MyAddIn & ".xlam"
NewFile = DownloadFromURL(LastDocURL, NewFile)
If NewFile = vbNullString Then
MsgBox "새 버전을 다운로드 하지 못했습니다."
Exit Sub
End If
'// 기존 Add-In을 읽기 전용상태로 만들어 새파일로 덮어씌운 다음 다운로드한 파일 삭제
ThisWorkbook.Saved = True '//저장알림방지
ThisWorkbook.ChangeFileAccess xlReadOnly '//읽기 전용으로 변경하면 새버전 붙여넣기 가능하게 됨
CreateObject("Scripting.FileSystemObject").CopyFile NewFile, ThisFullPath, True
Kill NewFile
'// 사용자 안내
MsgBox "사용중인 파일을 모두 저장하시고," & vbNewLine & "Excel을 다시 시작하면 새 버전이 적용됩니다."
Unload frmAbout '// 이 기능이 User_Form에서 수행되었음
Application.EnableEvents = True
End Sub
'Excel - VBA' 카테고리의 다른 글
VBA UDF 결과 배열을 Sheet에 출력하기 (0) | 2023.01.17 |
---|---|
IsTime() 셀 값이 시간 값인지 어떻게 확인할 수 있을까? (0) | 2023.01.11 |
URL을 지정하여 File을 Download하기 (0) | 2023.01.06 |
Ribbon Menu에 토글버튼 사용하기 (0) | 2023.01.06 |
Ribbon Menu에서 매크로에 인수 전달하기 (0) | 2023.01.05 |