지정된 위치에 이미지 자동삽입하기 (엑셀 VBA)
Vložit
- čas přidán 22. 02. 2020
- 엑셀로 된 자료를 만들다 보면 지정된 위치에 정해진 사진을 일괄 삽입해야 하는 경우가 있습니다.
삽입해야 하는 사진 이름에 대한 정보가 일괄 정리가 되어 있고, 상대적인 위치가 정해져 있을 경우 해당 영역의 사진을 한번에 입력할 수 있는 매크로를 만들어 봤습니다.
영상에서 사용된 예제 파일은 다음의 블로그에서 다운받을 수 있습니다.
blog.naver.com...
#사무자동화#엑셀매크로#이미지_자동삽입
개꿀 교육 감사합니다.
업무에 큰 도움이 됩니다. 감사합니다.
강의 잘 들었습니다. 강의 공유 감사드려요!
필요한 자료 감사히 배우고 갑니다.
도움이 되면 좋겠네요. ^^
유용 했습니다 감사합니다
넘 좋은 강의였습니다.
오타 오류가 나는거 같아서 진행이 안됩니다ㅠ
단축키 두개는 성공했는데
마지막 한개에서 막힙니다
코드서식을 따로 받을수 있을수 없을까요?
아래 블로그 글에서 다운로드 받으실수 있으실 겁니다.
blog.naver.com/550sn/221802639869
@@TricksOffice
감사합니당
정말 감사합니다.
근데 이미지가 80개 넘어가기 시작하면 셀안에 삽입되는 이미지 위치가 점점 셀 위로 점점 올라가다가 아예 셀 밖으로 나가는 현상이 발생합니다.
행높이도 모두 일정하게 맞추었는데 이상합니다.
이런 문제를 해결하려면 어떻게 해야하나요. ㅠㅠ
지금 당장은 Do while의 반복횟수를 구해서 거기에 소수점을 곱한것을 더하는 것으로 우선 땜질은 했는데 원인을 알 수가 없습니다.
imgY = 1 + imgY
Set Photo = ActiveSheet.Shapes.AddPicture(txt_Path & "\" & F_Name, False, True, ActiveCell.Left + 15, ActiveCell.Top + 25 + imgY * 0.0045, ActiveCell.Width - 30, ActiveCell.Height - 30)
엇... 신기한 현상이네요....
아.. 어렵다.. ㅠ. ㅠ
강의 잘 보았습니다. 제가 엑셀에 사진을 넣는 경우는 주로 병합된 셀에 사진을 넣게 되는데 강의대로 작업을 해보았더니 1개의 셀 기준으로 사진이 들어가더라고요 혹시 병합된 셀의 크기에 맞게 변환하려면 어떤 코드를 바꿔야 할까요?
바로 아래 chae lim 님 답글에 회신단 답글 참고해봐주시겠어요? 아마 답이 되실듯 합니다.
Set Photo = ActiveSheet.Shapes.AddPicture(txt_Path & "\" & F_Name, False, True, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height)
위의 소스를 아래와 같이 한번 바꿔 보시죠...
이 경우 이미지가 붙을 셀이 병합되어 있다면, 병합된 크기에 맞춰서 이미지 크기가 조정됩니다.
If Activecell.MergeCells Then
Set Photo = ActiveSheet.Shapes.AddPicture(txt_Path & "\" & F_Name, False, True, ActiveCell.Left, ActiveCell.Top, ActiveCell.MergeArea.Width, ActiveCell.MergeArea.Height)
Else
Set Photo = ActiveSheet.Shapes.AddPicture(txt_Path & "\" & F_Name, False, True, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height)
End If
안녕하세요. 좋은 강의 감사합니다.
사진을 셀 안에 넣을 때,
가로 세로비가 유지된 채 셀의 중앙에 배치되도록 할 수 있는지요?
셀의 상하 또는 좌우에 여백이 생기더라도 셀의 중앙에 배치되도록 했으면 합니다.
감사합니다.
할 수는 있는데, 고민은 좀 해야 할 것 같습니다.
위치에 대한 정보가 이미지의 맨 좌측 맨 위 위치를 정해주게 되어 있기 때문에, 셀의 크기를 먼저 보고 이미지 크기를 결정한 다음 계산식을 부여해서 이미지가 가운데로 오게끔 조정해야 합니다.
@@TricksOffice 답변 감사합니다. 좀 더 고민해 보겠습니다~
강의 잘 들었습니다. 주신 강의 베이스로 업무에 너무 잘 사용하고 있습니다. 그런데 하나 여쭤볼 것이 있는데. Range 버튼을 이용해서, 셀을 많이 불러오는 경우 제 컴퓨터에서는 43개 이상 셀 주소가 등록이 안되더라구요 ㅜㅜ 더 많은 셀을 불러 올 수 있도록 수정 하는 방법이 있다면 알고 싶습니다.
블로그에도 같은 질문을 올려주셨네요.
답변 드렸습니다.
아마도 레인지를 뜻하는 문자열이 너무 길어져서 그와같은 현상이 생겼을것 같습니다.
얼추 43개 주소 이상을 입력하게되면 글자수로는 255자 이상이 될것 같네요.
원하시는 셀 주소들을 선택한 상태에서
메뉴에서 수식 → 이름정의로 들어가면 따로 변수 이름처럼 정해줄 수 있을겁니다.
여기서 임의의 이름을 하나 정해 두시고,
텍스트 박스에 그 이름을 입력해 보세요. 그렇게 하면 될것 같긴 합니다.
(실제 제 컴퓨터에서 확인해 보지는 않았습니다.)
@@TricksOffice 답변 정말 감사드립니다. 변수 이름으로 저장해도 40개까지만 선택이 되네요. ㅜㅜ 저도 혹시 다른 방법 있나 찾아보겠습니다!!
아무래도 선택한 셀 주소가 연속적이 아니라 한칸씩 띄워져 있는 구조라 그런듯 합니다. ㅜㅜ
좋은 자료 감사합니다 질문이 있습니다 너무 좋은데 현업에서는 이미지 오른쪽에 어떤 데이터가 들어가야할텐데 현재 올려주신 부분은 사진 한장에 셀 하나 밖에 활용을 못하더라구요 지금 여러가지 주신 코드를 보고 실험 해보고 있는데 왼쪽셀이 몇셀로 병합이 되어있던 한셀의 크기로 오른쪽 이미지가 붙여 있더라구요 .. 궁금 한 부분은 왼쪽셀의 병합된 크기에 맞게 오른쪽 이미지가 붙게되었으면 하는데 .. 너무 어렵겠죠 ㅠ 감사합니다
왼쪽 셀과 상관없이, 이미지가 붙을 셀의 사이즈에 맞춰서 그림 크기가 조정됩니다.
만약 이미지가 붙을 셀이 병합되어 있다면, 그 병합된 셀 크기로의 수정은 가능할듯 합니다.
Set Photo = ActiveSheet.Shapes.AddPicture(txt_Path & "\" & F_Name, False, True, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height)
위의 소스를 아래와 같이 한번 바꿔 보시죠...
이 경우 이미지가 붙을 셀이 병합되어 있다면, 병합된 크기에 맞춰서 이미지 크기가 조정됩니다.
If Activecell.MergeCells Then
Set Photo = ActiveSheet.Shapes.AddPicture(txt_Path & "\" & F_Name, False, True, ActiveCell.Left, ActiveCell.Top, ActiveCell.MergeArea.Width, ActiveCell.MergeArea.Height)
Else
Set Photo = ActiveSheet.Shapes.AddPicture(txt_Path & "\" & F_Name, False, True, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height)
End If
적용해보겠습니다 ㅎ!! 감삼다
@@TricksOffice 정말 감사합니다~ 업무에 도움이 되었습니다 ㅎㅎ
이런 댓글이 또 제게는 힘이되죠~
도움이 되셨다니 다행이고, 방문해 주셔서 감사합니닷~ ^^
안녕하세요. 비디오 보고 따라 했는데 정말 사진이 자동 삽입 되서 너무 감동 중입니다. 감사합니다. 제가 워낙 엑셀 초보라 한가지만 도움을 구하고 싶네요. 혹시 사진의 사이즈를 지정할 수 있을까요? 엑셀에 있는 박스 보다 사진이 좀 크게 삽입이 돼서요. 혹시라도 도와주심 너무 감사하겠습니다. 😃
금일중으로 확인해 볼께요
이크크... 늦었습니다.
소스중에 다음의 항목을 바꿔주면 됩니다.
Set Photo = ActiveSheet.Shapes.AddPicture(txt_Path & "\" & F_Name, False, True, ActiveCell.Left, ActiveCell.Top, ActiveCell.Width, ActiveCell.Height)
여기에 맨마지막 항목 2개 ActiveCell.Width, ActiveCell.Height 가 각각 해당 셀의 폭과 높이를 의미합니다.
조금 작게 하기 위해서는
ActiveCell.Width - 5 , ActiveCell.Height - 5
처럼 수정하여 입력하면 될 것 같습니다. 빼는 수치가 어느 정도 크기가 적절할지는 감이 잘 안오네요...
몇 번 숫자를 바꿔 가면서 도전해 보시는 것이 어떨까 합니다.
혹시 버튼 하나만 눌러서 자동으로 그림삽입할수는 없을까요?
예를 들어서 해당폴더에 있는 그림을 자주 수정해야 할일이 있는데 그 수정된 파일만 폴더에 있으면 엑셀에서 버튼 하나 눌러서 바로바로 새로고침 되도록이요
가능은 할 듯 합니다. 다만 규칙은 명확히 있어야 할것 같습니다. 어느 위치에 어느 파일을 넣는다는...
아니면 처음 이미지를 삽입 할 때 만약 매크로를 사용해서 삽입 했다면, 옵션을 바꿔서 링크로 설정을 해 두면 원본 이미지 파일이 바뀌면 파일을 열면 자동으로 바뀔 수도 있습니다.
다만, 이 경우에는 다른 사람과 공유할 경우 엑박이 갈 수도 있으니 조심해야 합니다.
옵션 관련 내용은 아래 영상을 참고하세요.
czcams.com/video/USplFIuX6x4/video.html
안녕하세요!
처음부터 따라하며 수식 다 넣었는데
run을 누르면
컴파일 오류입니다.
Sub.Function 또는 Property가 필요합니다가 나옵니다ㅠㅠ
혹시 복사하는 숫자가 엑셀로 불러온 숫자여서 그럴까요?
아니면 옆에 사진을 넣을 셀이 병합된 셀이여서 그럴까요??
만드신 파일을 보내봐주시겠어요? 어딘가에 괄호가 빠지거나 하는 등의 작은 실수가 있을것 같은데... 내용을 보지 않고서는 모르겠네요.
550sn@naver.com
@@TricksOffice 감사합니다! 집에 도착한다면 보내드리겠습니다!
그런데 블로그의 수식을 그대로 복사해도 그러네요ㅠㅠ
감사합니다 (_ _)
잘 사용하던중 궁금한게 있어 댓글 남깁니다
sheet1 을 복사해서 sheet1 (2) 에서 사용하고싶은데요,
예를들어 sheet1에 A, B가입력되어있고 sheet1 (2)의 같은 열과 행에 C, D가 입력되어있다고 하면
sheet1 (2) 에서 매크로를 실행했을때 C, D 자리에 A, B 사진이 들어오네요 ㅜ
어떻게 해결해야되나요? ㅜㅜ... 답변기다리겠습니다 감사합니다!
퇴근후에 볼께요.
소스중에 지금 보니 제가 실수한 부분이 좀 있네요... ㅠ. ㅠ
소스 중에 Sheet1.... 로 되어 있는 "Sheet1" 을 모두 "Activesheet" 로 바꾸면 현재 선택된 Sheet에서 작업을 하게 될것 같습니다.
흐흐.. 다양한 방법으로 테스트한 검증된 소스가 아니다 보니 구독자분의 확인으로 조금씩 고쳐나가게 되네요. 감사합니다.
@@TricksOffice 덕분에 잘 해결했습니다 정말 감사합니다 ^^
파일명이 영문i 로 시작하면 가져 오지 못하는 이유가 있을까요?
영문 I 로 시작하는 이미지 왜에는 다 가져 오는 걸까요?
대소문자 모두 I로 시작하는 이미지는 못 가져 오네요.ㅜㅜ
엇! 현상이 특이하네요... 특별히 그렇게 될 이유는 없을것 같은데... ㅠ.ㅠ
한번 살펴 보겠습니다.
다른파일에서도 사용할수 있게 하는 방법좀 알려주세요. 새로운 파일 열어서 하면 작동이 안돼서요.. 방법좀 가르쳐주세요.
새 파일에서 쓰시려면 새 파일에 매크로를 복사해서 가져가셔야 할 것 같습니다.
9:56 점4개는 입력키가 뭔가요?
아... " 2개요. 따옴표 2개... 이렇게 보니 헷깔리네요.
@@TricksOffice 감사합니다. 사진 비율 유지 불러오기는 않돼나요?
@@user-cv1gl5fu2p 지금 소스에서는 이미지를 읽어올 때 폭과 높이를 Cell 크기로 고정시켰었는데, 여기에 -1,-1을 넣으면 원래 이미지 대로 붙습니다.
방법1.폭과 높이중 하나만 원하는 폭이나 높이로 놓고 나머지 값을 -1으로 놓으면 비율대로 확대 축소가 될것 같긴 한데... 이건 실험을 안해봐서 모르겠습니다.
방법2. 폭과 높이를 -1,-1으로 불러온 다음에, Shape.LockAspectRatio 값을 True로 놓고 난 다음 높이나 폭만 조정하면 될것 같습니다.
아래 문서 참고하시죠.
docs.microsoft.com/en-us/office/vba/api/excel.shape.lockaspectratio
폭과 높이 크기를 불러올 때부터 직접 계산해서 비율로 조정하는 것도 가능한데, 아래 영상 참고하시면 도움이 되시리라 생각됩니다.
czcams.com/video/yr4fW83Xlow/video.html
@@TricksOffice 초보라 따라 하는 것 밖에 못 하내요 ㅎㅎ 빠른 답변 감사 합니다 많은 도움 됩니다..
좀더시운방법업나요
글쎄요.. 반복되는 일에 정확한 어떤 규칙이 있다면 다른 방법을 찾아 볼 수도 있겠지만.. 잘 모르겠네요..
저 긴글좀 복사해서 좀 넣어주세요.
알아듣긴 힘들고 쓰고는 싶고 영타는 느리고 ㅜㅜ
아래 블로그 글에서 소스 파일 다운로드 받을 수 있습니다.
영상 소개글에도 아래 블로그 글의 링크는 있고요.
blog.naver.com/550sn/221802639869