참고: 지식인
선택한 셀에 일정 여백을 두고 그림을 빠르게 삽입할 수 있게 AutoHotKey로 만들어 보았습니다.
여백은 exe 파일명 _뒤에 숫자를 넣어주면 됩니다.
XLinsertPicture_5.exe 이면 여백을 5px 둡니다. _이 없으면 기본 여백 5를 두고 삽입하고 XLinsertPicture_0.exe 이면 여백 없이 삽입하겠습니다.
첨부한 exe 파일(XLInsertPicture_5.exe )을 실행하고 엑셀 셀에서 F3을 누르면 여백 5px을 남기고 현재 셀에 선택한 그림파일을 정확히 삽입해줍니다. 해당 셀의 기존 그림은 삭제합니다. 그림도형의 이름은 파일명으로 지정합니다.
그림 폴더는 엑셀파일이 있는 폴더에서 시작하고 한 번 선택하면 해당 폴더에서 시작합니다.
실행화면입니다.
실행화일 실행하고 대화창에서 확인을 누르면 상태표시줄 Tray로 최소화됩니다.
Win + X 키를 누르거나 Tray의 아이콘을 우클릭하고 Exit를 누르면 완전히 종료합니다.
단축키는 F3인데 엑셀창이 떠 있을 때만 작동합니다.
AHK 코드:
더보기
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
CoordMode, Pixel, Screen
#SingleInstance
sName := % SubStr( A_ScriptName, 1, -4)
StringSplit, tmp, sName, _
if ( tmp2 = "") {
m := 5
}
else {
m := tmp2
}
MsgBox, 0x40, XLInsertPictureInCell, Press <F3> to insert a picture with margin( %m% ) in the current cell.`n`nPress <Win+x> to quit.
Menu, Tray, Icon, shell32.dll, 143
Menu, Tray, Tip, <F3> to insert a picture [Win+X]: Exit
Menu, Tray, NoStandard
Menu, Tray, Add, Exit, ExitMenu
return
$F3::
xl:=ComObjActive("Excel.Application")
xl.Visible := True
IfWinActive, ahk_exe EXCEL.EXE
{
;Select an image
path := xl.ActiveWorkbook.Path . xl.PathSeparator
;sFile := xl.GetOpenFilename("Image File, *.jpg;*.png;*.gif;*.emf;*.svg")
FileSelectFile, sFile, 1, %path%, Select image, Image File ( *.jpg;*.png;*.gif;*.emf;*.svg)
if (sFile = "") {
return
}
;delete old images if any
sht := xl.ActiveSheet
i := sht.Shapes.Count
Loop, %i%
{
If (sht.Shapes(i).TopLeftCell.Address = xl.ActiveCell.Address) {
sht.Shapes(i).Delete
}
i := i - 1
}
;calc location
rng := xl.ActiveCell.MergeArea
;m := 5
pLeft := rng.Left + m
pTop := rng.Top + m
pWidth := rng.Width - m * 2
pHeight := rng.Height - m * 2
;MsgBox, % pLeft "," pTop "," pWidth "," pHeight
;insert the image
shp := sht.Shapes.AddPicture(sFile, 0, 1, pLeft, pTop, pWidth, pHeight)
SplitPath, sFile, name
shp.Name := name
xl:=""
}
return
ExitMenu:
#x::
ExitApp
참고로 위 기능을 엑셀 자체 기능으로 하려면 아래와 같은 VBA코드로 가능합니다.
VBA코드:
더보기
Sub InsertPictureHere()
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 = 5
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
End If
End Sub
'AutoHotKey' 카테고리의 다른 글
파워포인트 원하는 슬라이드로 바로 이동하기 (0) | 2023.07.02 |
---|---|
파워포인트 다른 그림으로 바꾸기, 2가지 방법 (0) | 2023.07.02 |
표(셀)에 맞게 사진 삽입하기 (0) | 2023.03.16 |
도형 잠금 효과 구현 (0) | 2023.03.04 |
PPT 도형 붙이기 (0) | 2023.02.11 |
두 개체 사이 거리를 다른 개체에 복사 적용 (0) | 2022.12.09 |
텍스트 상자 자동으로 들여쓰기/내어쓰기(Shift-Tab) (2) | 2022.12.02 |
화면확대후 키보드로 슬라이드 화면스크롤하기 (1) | 2022.10.13 |
최근댓글