Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

VBA

Excel 시작 시 실행하면 좋은 VBA 코드 7가지

권현욱(엑셀러) 2023. 10. 17. 12:00
반응형

Excel 파일이 처음 열릴 때 특정한 매크로나 VBA가 실행되도록 해두면 편리합니다. 남들보다 빠르게 하루를 시작할 수도 있습니다. Excel 파일이 열릴 때 자동으로 실행되는 몇 가지 VBA 코드에 대해 소개합니다.

Excel 매크로나 VBA를 잘 모르신다고요? 문제없습니다. 아래에서 소개된 코드를 복사/붙여넣기(복/붙) 하세요. 여러분들은 진행되는 순서만 잘 이해하시면 됩니다.

혹시 여유가 되신다면 [VBA 입문 강의]를 보시는 것도 좋겠습니다. 특히 16강 '이벤트와 이벤트 프로시저'를 잽싸게 보고 오세요. 보는 데 5분도 안 걸립니다.

※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 제 개인 의견이나 추가 자료들이 다수 포함되어 있습니다. 원문 내용이 궁금하신 분은 URL을 살펴보세요.


  • 원문: Excel VBA Code That Make Sense to Run at Startup
  • URL: https://turbofuture.com/computers/excel-vba-code-that-make-sense-to-run-at-startup

1. 백업용 통합 문서 만들기

Excel 통합 문서의 백업을 만드는 것은 힘든 작업을 안전하게 저장할 수 있는 좋은 방법입니다. 이러한 작업이 필요한 이유로는 여러 가지가 있습니다(예. 우발적인 변경, 버전 관리, 재해 복구, 공유 및 배포 등).
다음 단계를 통해 이 코드를 사용해 보세요.  

  1. Alt + F11을 눌러서 Visual Basic Editor를 엽니다.
  2. 왼쪽 창에서 ThisWorkbook(현재 통합 문서)을 선택합니다(더블 클릭).
  3. 오른쪽 창이 나타나면 다음 VBA 코드를 입력합니다(이벤트 프로시저).
''' 경로와 사용자 이름을 적용할 때 오류가 생길 소지가 있어서 원래 코드 내용을 일부 수정했습니다.
Private Sub Workbook_Open()
    CreateBackupCopy
End Sub

Sub CreateBackupCopy()
    Dim desktopPath As String
    desktopPath = ThisWorkbook.Path & "\"
    
    Dim workbookName As String
    workbookName = "myworkbook.xlsx"
    
    Dim backupPath As String
    backupPath = desktopPath & workbookName
    
    ThisWorkbook.SaveCopyAs backupPath
End Sub

통합 문서를 닫았다가 열어 보세요. 통합 문서와 같은 폴더에 'myworkbook.xlsx'라는 이름의 복사본 파일이 만들어집니다. 기존 파일을 일일이 복사하지 않아도 자동으로 복사본이 만들어지므로 테스트하거나 개발할 때 편리합니다.

2. 버전 업데이트 안내

엑셀 파일을 여러 명이 공유하고 있다면 스프레드시트를 최신 정보나 논리로 업데이트해야 합니다. 개인용으로 사용하더라도 작업 이력을 관리해야 하는 경우도 있습니다. 이때 매크로를 사용하여 통합 문서가 열릴 때 메시지를 표시할 수 있습니다. 이를 통해 통합 문서 버전과 구현된 관련 업데이트에 대해 사용자에게 알릴 수 있습니다.(예. 사용자에게 변경 사항 알리기, 파일 버전 관리, 중요 업데이트 알림, 중요한 정보 전달 등).
다음 단계를 통해 이 코드를 사용해 보세요.  

  1. Alt + F11을 눌러서 Visual Basic Editor를 엽니다.
  2. 왼쪽 창에서 ThisWorkbook(현재 통합 문서)을 선택합니다(더블 클릭).
  3. 오른쪽 창이 나타나면 다음 VBA 코드를 입력합니다(이벤트 프로시저).
Private Sub Workbook_Open()
    Dim msg As String
    msg = "Welcome to this Excel workbook!" & vbCrLf & vbCrLf & _
        "Version 1.0" & vbCrLf & _
        "- Added new data entry forms." & vbCrLf & _
        "- Improved performance."
    MsgBox msg, vbInformation, "Version 1.0 Update"
End Sub

코드에서 vbCrLf는 행을 바꾸기 위한 용도로 사용합니다. vbNewLine이라고 해도 됩니다. 이 코드가 포함된 통합 문서를 열면 다음과 같은 메시지 상자가 나타납니다. 표시되는 텍스트는 자신의 업무에 맞는 것으로 바꾸세요.

(이미지: 아이엑셀러 닷컴)

3. 타임 스탬프 생성

특정한 시간을 워크시트에 표시하면 문서 작업 기간을 이해하거나 해당 시간을 참조할 수 있습니다. Excel 통합 문서를 열 때 타임스탬프를 생성하면 다양한 용도로 사용될 수 있습니다(예. 문서화 및 기록 보관, 업데이트 전달, 데이터 최신성 보장, 품질 관리 등).
다음 단계를 통해 이 코드를 사용해 보세요.  

  1. Alt + F11을 눌러서 Visual Basic Editor를 엽니다.
  2. 왼쪽 창에서 ThisWorkbook(현재 통합 문서)을 선택합니다(더블 클릭).
  3. 오른쪽 창이 나타나면 다음 VBA 코드를 입력합니다(이벤트 프로시저).
Private Sub Workbook_Open()
    Worksheets("Sheet1").Range("A1").Value = "최종 수정: " & Now()
End Sub

지정한 곳에 타임 스탬프가 표시됩니다. "Sheet1"과 "A1"을 바꾸면 타임스탬프가 인쇄되는 시트와 범위를 변경할 수 있습니다.

(이미지: 아이엑셀러 닷컴)

4. 수동 계산

수식이 많이 사용된 대용량 파일인 경우 적절한 때가 될 때까지 파일 내의 수식을 계산하고 싶지 않을 수도 있습니다. 자동 계산 기능을 끄면 파일 속도가 느려지는 것을 걱정할 필요가 없습니다(예. 과도한 재계산 방지, 자원 사용량 줄이기, 사용자 경험 개 등).
다음 단계를 통해 이 코드를 사용해 보세요.  

  1. Alt + F11을 눌러서 Visual Basic Editor를 엽니다.
  2. 왼쪽 창에서 ThisWorkbook(현재 통합 문서)을 선택합니다(더블 클릭).
  3. 오른쪽 창이 나타나면 다음 VBA 코드를 입력합니다(이벤트 프로시저).
Private Sub Workbook_Open()
    Application.Calculation = xlCalculationManual
End Sub

[주의] 이 기능을 사용할 때에는 주의가 필요합니다. 통합 문서가 자동 계산 되지 않으면 다른 작성자와 혼동을 일으킬 수 있을 뿐만 아니라 자기 자신도 혼란을 겪을 수 있으므로 불가피한 경우에만 사용하는 것이 좋습니다. [수식] 탭 - [계산] 그룹 - [계산 옵션]을 클릭하여 원래 상태로 되돌릴 수 있습니다.

5. 툴바 숨기기

Excel 파일을 편집할 필요가 없는 경우 파일을 열 때 도구 모음을 숨겨서 작업 공간을 넓게 표시할 수 있습니다(예. 특정 작업에 집중, 맞춤형 사용자 인터페이스, 프레젠테이션, 워크시트 영역 최대화 등).
다음 단계를 통해 이 코드를 사용해 보세요.  

  1. Alt + F11을 눌러서 Visual Basic Editor를 엽니다.
  2. 왼쪽 창에서 ThisWorkbook(현재 통합 문서)을 선택합니다(더블 클릭).
  3. 오른쪽 창이 나타나면 다음 VBA 코드를 입력합니다(이벤트 프로시저).
Private Sub Workbook_Open()
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
End Sub

코드를 실행하면 리본이 사라지고 아래와 같이 워크시트 작업 공간만 표시됩니다.

원래 상태로 되돌리려면 다음 코드를 실행합니다. Visual Basic Editor에서 [직접 실행 창]을 표시하고 코드를 복/붙 한 다음 Enter를 누르면 됩니다.

Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"

6. 특정한 Word 및 Excel 파일 열기

여러 파일을 사용해야 할 때, 하나의 파일이 열릴 때 특정 파일을 함께 열리도록 하면 프로세스를 간소화하는 데 도움이 될 수 있습니다(예. 간소화된 작업흐름, 즉각적인 접근, 향상된 생산성, 관리 작업 감 등).
다음 단계를 통해 이 코드를 사용해 보세요.  

  1. Alt + F11을 눌러서 Visual Basic Editor를 엽니다.
  2. 왼쪽 창에서 ThisWorkbook(현재 통합 문서)을 선택합니다(더블 클릭).
  3. 오른쪽 창이 나타나면 다음 VBA 코드를 입력합니다(이벤트 프로시저).
''' 경로와 사용자 이름을 적용할 때 오류가 생길 소지가 있어서 원래 코드 내용을 일부 수정했습니다.
''' 열려는 Word와 Excel 파일이 같은 폴더에 있어야 제대로 작동합니다.
Private Sub Workbook_Open()
    Dim wordFilePath As String
    Dim excelFilePath As String
    
    wordFilePath = ThisWorkbook.Path & "\Test.docx"
    excelFilePath = ThisWorkbook.Path & "Test.xlsx"
    
    Call OpenWordFile(wordFilePath)
    Call OpenExcelFile(excelFilePath)
End Sub

Sub OpenWordFile(filePath As String)
    Dim wordApp As Object
    Set wordApp = CreateObject("Word.Application")
    wordApp.Visible = True
    wordApp.Documents.Open filePath
End Sub

Sub OpenExcelFile(filePath As String)
    Dim excelApp As Object
    Set excelApp = CreateObject("Excel.Application")
    excelApp.Visible = True
    excelApp.Workbooks.Open filePath
End Sub

특정한 엑셀 파일을 여는 경우라면 Open 문을 이용하여 한 줄이면 됩니다.

Workbooks.Open ThisWorkbook.Path & "\Test.xlsx"

7. 통합 문서 암호로 보호하기

통합 문서를 암호로 보호하면 민감한 Excel 파일에 대한 보안을 강화할 수 있습니다 (예. 기밀 유지, 무단 변경 방지, 통제된 접근, 개인정보 보호, 우발적인 변경 방 등).
다음 단계를 통해 이 코드를 사용해 보세요.  

  1. Alt + F11을 눌러서 Visual Basic Editor를 엽니다.
  2. 왼쪽 창에서 ThisWorkbook(현재 통합 문서)을 선택합니다(더블 클릭).
  3. 오른쪽 창이 나타나면 다음 VBA 코드를 입력합니다(이벤트 프로시저).
Private Sub Workbook_Open()
    Dim password As String
    password = "1234"
    ThisWorkbook.Protect password:=password, structure:=True, Windows:=False
End Sub

이 코드를 실행하면 워크시트에 내용을 입력하거나 수정할 수는 있지만 통합 문서의 구조(예. 시트를 삽입하거나 삭제)는 수정할 수 없게 됩니다. 원래 상태로 돌아가려면 다음 코드를 사용합니다.

Private Sub Workbook_Open()
    Dim password As String
    password = "1234"
    ThisWorkbook.Unprotect password:=password
End Sub
반응형