액셀에서 매크로는 아주 편리한 기능을 합니다.

거기다 VB 언어로 되어있어 프로그래밍도 가능하죠.

매크로로 2개의 셀을 자동으로 병합해 주는 기능을 만들어볼까 합니다.


아래 그림과 같이 셀이 준비 되어있다고 할때,

기존에는 2개의 셀을 선택한 다음에 마우스 클릭으로 병합을 일일이 해 줘야 하는데요

한, 두개면 상관 없지만 이게 몇 십개 몇 백개라면 문제가 됩니다. 시간이 오래걸리죠.

이 작업을 매크로로 하게 되면 쉽게 처리할 수 있습니다.



우선 매크로를 기록해야 합니다.

보기 탭의 매크로를 눌러보면 메뉴가 나오는데 거기서 매크로 기록을 누르세요.



병합 작업을 쉽게 하기 위해서는 단축키가 필수인데요.

단축키는 알아서 편리한 단축키로 설정하세요.

저는 CTRL+Q로 지정하였습니다.



단축키 지정이 끝나고 확인을 눌렀으면 이제 그냥 매크로 기록 중지하세요.

매크로 내용은 직접 넣을테니까요.



매크로 기록이 중지 되었으니 이제 편집을 해야죠.

편집하기 전에 매크로 보기를 해야 합니다.



매크로 목록이 나오면 "편집" 버튼을 누릅니다.




매크로를 편집할 수 있는 비쥬얼베이직 창이 실행되는데요...

여기다가 아래 코드를 넣으면 끝입니다. 소스는 아래에 있으니 복사해서 붙여넣기 하세요.




소스를 모두 붙여 넣었으면 이제 테스트 해봐야겠죠.

A의 1번 셀을 선택하고 단축키(저는 CTRL+Q)를 눌러봅니다.

아주 잘 실행되서 병합이 한방에 되었습니다.

B번 셀도 해보고, C번 셀도 해봤습니다.

모두 병합되었네요.




아래의 소스코드를 적당하게 복사해서 비쥬얼 베이직프로그램 창(매크로 편집 창)에 붙여넣으세요.


Sub 매크로1()
'
' 매크로1 매크로
'
' 바로 가기 키: Ctrl+q
'
    
    On Error Resume Next
    
    CurRow = ActiveCell.Row
    CurCol = ActiveCell.Column
    
    ' 병합할 셀의 내용을 지워야 확인창이 안뜬다.
    ' 한 셀의 내용이 지워진다라는 내용의 확인창.
    Cells(CurRow + 1, CurCol).Value = ""
    
    ' 현재 셀과 다음 셀을 선택한다.
    Range(Cells(CurRow, CurCol), Cells(CurRow + 1, CurCol)).Select
    
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
    
End Sub


1. 윈도 XP에서 C:\Windows\system32\shscrap.dll 파일을 복사해서 윈도7의 C:\Windows\system32에 복사를 한다.

    윈도 XP가 없어서 shscrap.dll 파일을 구하지 못하신 분들은 첨부파일에 있으니 다운받으세요.


2. 다음 내용을 복사해서 메모장에 붙여넣기 한 다음에 파일명을 .reg 파일로 만듭니다.

     만들기 귀찮으신 분들은 첨부파일에 "스크랩파일 열기.reg" 파일을 이용하세요.



Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\.shs]
@="ShellScrap"
[HKEY_CLASSES_ROOT\ShellScrap]
@="Scrap object"
"NeverShowExt"=""
"FriendlyTypeName"=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,\
  00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
  32,00,5c,00,73,00,68,00,73,00,63,00,72,00,61,00,70,00,2e,00,64,00,6c,00,6c,\
  00,2c,00,2d,00,32,00,35,00,38,00,00,00
 
[HKEY_CLASSES_ROOT\ShellScrap\DefaultIcon]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\
  73,00,63,00,72,00,61,00,70,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,31,00,30,\
  00,30,00,00,00
 
[HKEY_CLASSES_ROOT\ShellScrap\shell]
 
[HKEY_CLASSES_ROOT\ShellScrap\shell\open]
 
[HKEY_CLASSES_ROOT\ShellScrap\shell\open\command]
@=hex(2):72,00,75,00,6e,00,64,00,6c,00,6c,00,33,00,32,00,20,00,25,00,53,00,79,\
  00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,\
  73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,73,00,63,00,72,00,61,\
  00,70,00,2e,00,64,00,6c,00,6c,00,2c,00,4f,00,70,00,65,00,6e,00,53,00,63,00,\
  72,00,61,00,70,00,5f,00,52,00,75,00,6e,00,44,00,4c,00,4c,00,20,00,25,00,31,\
  00,00,00
 
[HKEY_CLASSES_ROOT\ShellScrap\shellex]
 
[HKEY_CLASSES_ROOT\ShellScrap\shellex\DataHandler]
@="{56117100-C0CD-101B-81E2-00AA004AE837}"
 
 
[HKEY_CLASSES_ROOT\CLSID\{56117100-C0CD-101B-81E2-00AA004AE837}]
@="Shell Scrap DataHandler"
 
[HKEY_CLASSES_ROOT\CLSID\{56117100-C0CD-101B-81E2-00AA004AE837}\InProcServer32]
@="shscrap.dll"
"ThreadingModel"="Apartment"





3. 방금 만든(다운받은) .reg 파일을 더블클릭해서 레지스트리의 내용을 시스템에 적용한다.

     경고 메시지가 뜹니다. 그런데 여기 레지스트 내용에는 해가될 내용이 아무것도 없으니 안심하시기 바랍니다.




4. .shs 파일을 더블클릭하면 OK




스크랩파일 열기.reg


shscrap.dll


+ Recent posts