DataGuide

자동 리프레시 매크로 설정하기

자동 리프레시 매크로를 설정하는 방법을 안내드려요.

FnGuide2025-12-19
  • 엑셀에서 개발 도구(Developer) 탭이 보이도록 설정되어 있어야 합니다.(엑셀 옵션 → 리본 사용자 지정 → “개발 도구” 체크)

  • 파일은 반드시 매크로 사용 통합문서(.xlsm) 로 저장해 주세요.

  • 매크로 실행이 막혀 있다면 보안 경고에서 ‘콘텐츠 사용(Enable Content)’ 을 선택해야 합니다.


  1. 개발 도구(Developer) 탭 → 삽입(Insert)

  2. 단추(버튼) 선택 후, 시트(원하는 위치)에 버튼을 그립니다.

  3. 버튼 이름은 이해를 위해 “자동리프레시버튼” 등으로 변경해 두시면 좋습니다.

  1. 키보드에서 Alt + F11 → VBA 편집기 실행

  2. 상단 메뉴 Insert(삽입) → Module(모듈) 선택

  3. 아래 코드를 모듈 창에 그대로 붙여넣기 합니다.

Plaintext
Sub DoAllSheetRefresh()	
                	
    Dim cntWorkSheet As Integer ' 워크시트 갯수	
    Dim idxWorksheet As Integer ' 위크시트 인덱스	
    Dim objOLE        As Object ' 리프래쉬버튼	
    Dim objSheet      As Worksheet '리프래쉬할 위크시트	
                	
    cntWorkSheet = Application.ActiveWorkbook.Sheets.count ' 워크시트의 갯수를 미리 받음	
                	
    For idxWorksheet = 1 To cntWorkSheet ' 워크시트를 번갈아가면서 리프래쉬버튼을 순서대로 조사한다	
                    	
        On Error Resume Next ' 에러가 발생하더라도 계속 진행한다.	
                    	
        Set objSheet = Application.ActiveWorkbook.Sheets(idxWorksheet) ' 리프래쉬할 시트를 할당한다	
                    	
        objSheet.Activate '해당시트를 보이게 탭을 이동시킨다.	
                    	
        	
        FollowLinksByScreenTip_Object	
        	
                    	
    Next idxWorksheet	
End Sub	
	
	
Sub FollowLinksByScreenTip_Object()	
    Dim ws As Worksheet	
    Set ws = ActiveSheet	
	
    Dim count As Long, j As Long	
    count = ws.Hyperlinks.count	
	
    Dim matching() As Hyperlink	
    Dim n As Long	
    ReDim matching(1 To count)	
	
    For j = 1 To count	
        Dim hl As Hyperlink	
        Set hl = ws.Hyperlinks(j)	
	
        Dim tip As String	
        tip = ""	
        On Error Resume Next	
        tip = hl.ScreenTip	
        On Error GoTo 0	
	
        If StrComp(tip, "DataGuide6", vbTextCompare) = 0 Then	
            n = n + 1	
            Set matching(n) = hl	
        End If	
    Next j	
	
    Dim i As Long	
    For i = 1 To n	
        On Error Resume Next	
        matching(i).Follow NewWindow:=False, AddHistory:=True	
        On Error GoTo 0	
    Next i	
End Sub	

동작 원리

  • 각 시트를 하나씩 이동하면서, 해당 시트에 있는 하이퍼링크 중 ScreenTip(스크린팁)이 “DataGuide6”인 링크를 찾아 실행(Follow) 합니다.

  • 그 결과, 시트별로 출력된 DataGuide6 데이터가 순차적으로 Refresh 됩니다.

  1. 1번에서 만든 자동리프레시버튼을 마우스 우클릭

  2. 매크로 지정(Assign Macro) 선택

  3. 목록에서 DoAllSheetRefresh 선택 후 확인

  • 각 시트에 SetForm / TimeSeries / Cross Sectional 등으로 필요한 데이터를 출력합니다.

  • 여러 시트에 데이터를 나눠서 출력해 두면, 이후 버튼 한 번으로 전체 리프레시가 가능합니다.

  • 자동리프레시버튼을 한 번 클릭하면→ 통합문서 내 모든 시트를 순회하면서→ DataGuide6 출력 데이터가 자동으로 전체 Refresh 됩니다.


  • 시트 수와 데이터량에 따라 Refresh 시간이 걸릴 수 있습니다. 실행 중에는 버튼을 연속으로 누르지 말아주세요.

  • 어떤 시트에는 DataGuide6 링크(스크린팁 “DataGuide6”)가 없을 수 있습니다. 그 경우 해당 시트는 그냥 건너뛰고 다음 시트로 진행합니다.

  • 파일을 공유/이동하는 경우에도 매크로가 유지되도록 반드시 .xlsm로 저장해 주세요.

매크로 Q1. 버튼을 눌렀는데 일부 시트만 갱신돼요.

해당 매크로는 각 시트에서 ScreenTip이 “DataGuide6”로 설정된 하이퍼링크를 찾아 실행합니다.

  • 어떤 시트에 DataGuide6 링크가 없거나(데이터가 출력되지 않았거나)

  • 링크가 있어도 ScreenTip 조건이 맞지 않으면그 시트는 갱신 대상에서 제외될 수 있습니다.

매크로 Q2. 매크로 실행이 안 되고 보안 경고가 떠요.

엑셀 상단에 보안 경고(매크로 차단) 가 뜨면 콘텐츠 사용(Enable Content) 을 눌러야 실행됩니다. 또한 파일은 .xlsm(매크로 사용 통합문서) 로 저장되어야 합니다.

매크로 Q3. 버튼을 눌렀더니 시트 탭이 계속 왔다 갔다 해요. 정상인가요?

정상입니다. 이 매크로는 각 시트를 한 장씩 활성화(탭 이동) 하면서 그 시트의 DataGuide6 데이터를 순차적으로 갱신합니다.

매크로 Q4. 데이터가 많아서 오래 걸리는데 중간에 멈춘 건가요?

시트 수/데이터량에 따라 시간이 걸릴 수 있습니다. 실행 중에는 버튼을 연속으로 다시 누르지 말고, 엑셀이 작업을 완료할 때까지 기다려 주세요.

매크로 Q5. 특정 시트에서만 오류가 나거나 갱신이 안 됩니다.

본 매크로는 On Error Resume Next 처리를 통해, 특정 시트에서 문제가 발생하더라도 작업을 중단하지 않고 무시한 뒤 다음 시트로 넘어가도록 설계되어 있습니다.

따라서 특정 시트만 반복적으로 갱신되지 않는다면, 해당 시트가 문제로 인해 처리가 건너뛰어진 것입니다.

이는 주로 해당 시트에 '매크로 지정'이 되어 있지 않거나, 기존 '양식'에 맞지 않게 데이터가 입력되어 있는 경우에 발생하므로 이 부분을 우선적으로 점검해 주세요.