관련: 지식인

 

 

엑셀에서 그림을 삽입하면 기본으로 크기조절 옵션이 설정되는데

그림을 여러개 삽입할 때 기본 속성을 원하는 대로 설정하고 싶은 경우입니다.

 

 

 

1. VBA를 이용할 수 있습니다.

Alt+F11 창에서 삽입 > 모듈을 추가하고 아래 내용을 붙여넣습니다.

코드창을 닫고 원하는 셀을 선택하고 Alt+F8누르고 InsertPicureFileHere 를 실행해서

원하는 사진을 현재 셀위에 삽입하고 '크기조절 및 이동' 옵션으로 설정합니다.

클립보드 사진을 삽입하려면 InsertClipboardPictureHere 를 실행합니다.

 

더보기
Sub InsertPictureFileHere()
 
    Dim sht As Worksheet
    Dim rng As Range
    Dim shp As Shape
    Dim m As Single
    Dim sFile As Variant
    
    ChDir ThisWorkbook.Path & Application.PathSeparator
    'sFile = Application.GetOpenFilename("Image File,  *.jpg;*.png;*.gif;*.emf;*.svg")
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .Filters.Clear
        .Filters.Add "Image File", "*.jpg;*.png;*.gif;*.emf;*.svg"
        .InitialFileName = ThisWorkbook.Path & Application.PathSeparator
        If .Show = -1 Then sFile = .SelectedItems(1)
    End With
    
    If sFile <> "" Then
        
        Set rng = Application.ActiveCell.MergeArea
        Set sht = rng.Parent
        
        For i = sht.Shapes.Count To 1 Step -1
            If sht.Shapes(i).TopLeftCell Is ActiveCell Then
                sht.Shapes(i).Delete
            End If
        Next i
        m = 1
        sht.Shapes.AddPicture sFile, 0, 1, rng.Left + m, rng.Top + m, rng.Width - 2 * m, rng.Height - 2 * m
        'Set shp = sht.Shapes.AddPicture2(sFile, 0, 1, rng.Left + m, rng.Top + m, rng.Width - 2 * m, rng.Height - 2 * m, msoPictureCompressDocDefault)
        Set shp = sht.Shapes(sht.Shapes.Count)
        shp.Name = sFile
        'shp.Locked = False
        'shp.Placement = 3   'xlFreeFloating
        'shp.Placement = 2   'xlMove
        shp.Placement = 1   'xlMoveAndSize
        
    End If
     
End Sub

Sub InsertClipboardPictureHere()
 
    Dim sht As Worksheet
    Dim rng As Range
    Dim shp As Shape
    Dim m As Single
     
    
    'CommandBars.ExecuteMso "Paste"
    Set sht = ActiveSheet
    'sht.PasteSpecial 0  ' 0:PNG, 1:JPG 3:EMF 5: Office Object
    sht.Paste ActiveCell
    Set shp = sht.Shapes(sht.Shapes.Count)
    
    If shp.Type = msoPicture Then
        
        Set rng = Application.ActiveCell.MergeArea
        For i = sht.Shapes.Count To 1 Step -1
            If sht.Shapes(i).TopLeftCell Is ActiveCell Then
                If Not sht.Shapes(i) Is shp Then sht.Shapes(i).Delete
            End If
        Next i
        m = 1
        shp.LockAspectRatio = msoFalse
        shp.Left = rng.Left + m
        shp.Top = rng.Top + m
        shp.Width = rng.Width - 2 * m
        shp.Height = rng.Height - 2 * m
        shp.Name = "Pic_" & rng.Address(0, 0)
        'shp.Locked = False
        'shp.Placement = 3   'xlFreeFloating
        'shp.Placement = 2   'xlMove
        shp.Placement = 1   'xlMoveAndSize
        
    End If
     
End Sub

 

매크롤 실행 화면:

 

위 두가지 매크로를 빠른 실행에 추가해서 Alt+숫자키로 실행할 수도 있습니다.

사진의 속성이 '크기와 위치 조절' 옵션으로 설정됩니다.

 
 
엑셀 매크로 샘플파일 첨부합니다.
 
 
 
 

 
 
 
 

2. VBA매크로의 경우 xlsm 파일이 항상 열려 있어야 하고

아니면 추가기능으로 설치하고 리본 아이콘 등의 인터페이스를 추가해야 합니다.

AutoHotkey를 이용하면 단축키 F3을 누르면 로컬 파일을 불러와서 삽입하고

F6을 누르면 클립보드 이미지를 현재 셀에 붙여넣고

그 다음 그림의 크기조절 옵션을 '크기 및 위치 조절' 옵션으로 설정해줍니다.

첨부한 오토핫키 실행파일을 실행하면 일단 아래 알림창이 뜹니다.

 

 

확인을 누르면 상태표시줄 트레이로 최소화됩니다.

이제 엑셀 창에서 원하는 셀을 선택하고 F3이나 F6을 누르면

로컬 파일을 삽입하거나 클립보드 이미지를 현재 셀위에 주어진 여백(1)으로 삽입하고

크기와 위치 조절 옵션으로 조정합니다.

 

 

 

실행파일이름을 _1.exe 를 _5.exe로 바꾸고 실행하면 여백을 5로 변경합니다.

종료하려면 트레이의 아이콘을 우클릭하고 종료하거나 Win+X를 누르면 됩니다.

 

 

 

오토핫키 소스와 실행파일 첨부합니다.

 

XLInsertPictureClipboard_1.ahk
0.00MB

 

XLInsertPictureClipboard_1.exe
1.22MB