셀에 맞게 여러사진 입력 매크로 실행시 사진화질 원본으로 입력하는 방법

VBA
작성자
엑셀고수를향해
작성일
2023-11-21 23:14
조회
130
엑셀버전 : 엑셀2019

운영체제 : 윈도우10

질문 요약 : 사진입력 매크로 원본화질 그대로 입력되도록 VBA코드 수정 요청건

안녕하세요.

선태간 여러셀에 사진 입력하는 매크로를 구하여 사용중에 있습니다.

셀에 사진을 입력했을때는 화질이 그대로인데, 파일을 저장하면  사진 화질이 떨어져 있습니다.

원본 사진 화질 그대로 만들수는 없는지 도움을 요청드립니다.

감사합니다.

 

Sub 선택한여러셀에사진넣기()

Dim intCount As Integer         ' 선택한 셀의 개수를 저장하는 변수
Dim fileNames As Variant        ' 모든 파일을 넣을 배열 변수
Dim i As Long                   ' 반복문에 사용할 변수
Dim c As Range                  ' 그림이 들어갈 셀을 지정할 변수

Application.ScreenUpdating = False  ' 화면 업데이트 (일시)정지

If TypeName(Selection) <> "Range" Then ' 영역이 선택되지 않았다면
MsgBox "영역이 선택되지 않음" ' 오류 메시지 출력
Exit Sub ' 매크로 종료
End If

intCount = Selection.Count ' 선택된 셀의 개수를 변수에 저장

fileNames = Application.GetOpenFilename("Picture Files (*.jp*; *.gif; *.bmp; *.png),*.xls", , _
"그림파일을 선택", MultiSelect:=True) ' 그림 파일을 선택

If TypeName(fileNames) = "Boolean" Then Exit Sub ' 취소 선택 시 매크로 종료

i = 1 ' 선택된 셀에 그림을 삽입하기 위한 변수 초기화

For Each c In Selection ' 선택한 셀마다 반복

If i > UBound(fileNames) Then Exit Sub ' 선택한 셀의 개수가 그림 개수보다 많으면 매크로 종료

' 각 그림 파일 삽입

With ActiveSheet.Shapes.AddPicture(fileNames(i), 1, 1, 1, 1, 100, 100)
.LockAspectRatio = msoFalse ' 가로세로고정비율 해제
.Top = c.Top + 2 ' 그림 위쪽 위치를 현재 셀 위쪽 + 2 위치에
.Left = c.Left + 2 ' 그림 왼쪽 위치를 현재 셀 왼쪽 + 2 위치에
.Height = c.Height - 4 ' 그림 높이를 현재 셀 높이 - 4 크기로
.Width = c.Width - 4 ' 그림 폭을 현재 셀 폭 - 4 크기로
End With

i = i + 1 ' 다음 그림 삽입을 위한 변수 증가

Next c

Application.ScreenUpdating = True

End Sub

 

 

신고
스크랩
공유
전체 2

  • 2023-11-22 00:52

    @엑셀고수를향해 님 그림 해상도 변경은 엑셀 통합문서 설정으로만 가능합니다.

    그림을 선택하고 그림서식 -> 그림 압축에서 변경해보십시오. 그림 압축 설정은 vba로 접근할 수 없어서, 파일마다 적용해줘야 합니다.

    아래 링크에서 sendkeys로 접근하는 것도 가능하다고 하나 속도가 느릴 수 있다고하니 참고해보십시오.

    https://answers.microsoft.com/en-us/msoffice/forum/all/control-image-compression-setting-in-workbook-with/9d40ea0b-f22c-451b-9049-990185ceb767


  • 2023-11-22 09:09

    @엑셀고수를향해 님 AddPicture 방식으로 그림을 삽입하는 경우에는 원본 화질이 나빠지지 않는데...
    Excel의 옵션에 보면 해당 문서에 저장할 이미지 크기 및 품질을 선택할 수 있습니다.
    이미지 압축 안함을 선택하시면 원본 해상도 그대로 저장이 될 것입니다.

    압축옵션에서 "고화질"을 선택하면 파일용량이 허용하는 한도에서는 압축되지 않습니다.

    요즘 카메라 화소가 커서 용량이 매우 커지므로 가능하면 330ppi정도를 기본으로 선택하시면 좋습니다.


전체 13,385
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚교재 출간 안내] 「진짜쓰는 실무엑셀」 , 드디어 출간되었습니다! (237)
오빠두엑셀 | 2022.02.03 | 추천 515 | 조회 262050
오빠두엑셀 2022.02.03 515 262050
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 280 | 조회 18371
오빠두엑셀 2021.10.28 280 18371
64616 기능/도구
New 컨쉬엘 단축키 설명 부분 질문
박재우 | 2023.12.06 | 추천 0 | 조회 16
박재우 2023.12.06 - 16
64614 기능/도구
New 틀고정 단축기 관련 질문
박재우 | 2023.12.06 | 추천 0 | 조회 21
박재우 2023.12.06 - 21
64613 피벗테이블
New 피벗테이블 새로고침하면 값 사라짐 현상 (1)
정마담 | 2023.12.06 | 추천 0 | 조회 21
정마담 2023.12.06 - 21
64611 함수/공식
New if 비교문 같은값인데 다른값으로 인식 첨부파일 (1)
aish | 2023.12.06 | 추천 0 | 조회 18
aish 2023.12.06 - 18
64610 함수/공식
New (왕초보 질문) 천원단위로 절사 또는 절상하고 싶으면 어떤 함수를 써야할까요? (1)
치키치키 | 2023.12.06 | 추천 0 | 조회 17
치키치키 2023.12.06 - 17
64603 함수/공식
New 불규칙한 텍스트에서 공통된 일부 텍스트 추출하는 방법이 있을까요? 첨부파일 (4)
| 2023.12.06 | 추천 0 | 조회 35
2023.12.06 - 35
64591 함수/공식
New today함수 이용하면서 문구를 같이 넣을 수 있나요? (2)
chi**** | 2023.12.06 | 추천 0 | 조회 42
chi**** 2023.12.06 - 42
64590 VBA
New 인코딩 관련 오류 문의사항입니다 첨부파일 (1)
dltmdghe**** | 2023.12.06 | 추천 0 | 조회 36
dltmdghe**** 2023.12.06 - 36
64589 함수/공식
New Transpose / Unique 함수 질문 엑셀파일첨부파일 (4) 답변완료
채원석 | 2023.12.06 | 추천 0 | 조회 41
채원석 2023.12.06 - 41
64584 문서서식
New 엑셀 인쇄 미리보기 화면과 출력내용이 다른 이유는 뭘까요? (1)
kye | 2023.12.06 | 추천 0 | 조회 28
kye 2023.12.06 - 28
64581 함수/공식
New 합격 불합격 자동으로 나타내고 싶습니다. 엑셀파일첨부파일 (2) 답변완료
ID백곰 | 2023.12.06 | 추천 0 | 조회 43
ID백곰 2023.12.06 - 43
64579 차트/그래프
New 차트의 범례 순서 변경 첨부파일 (2)
flexion | 2023.12.06 | 추천 0 | 조회 32
flexion 2023.12.06 - 32
64575 함수/공식
New 두 개의 셀에서 중복값만 추출하고 싶습니다. 엑셀파일 (2) 답변완료
슈바츠론 | 2023.12.06 | 추천 0 | 조회 51
슈바츠론 2023.12.06 - 51
64574 함수/공식
New 인덱스, 매치 정확한 단어 말고 포함된 단어로 불러오기 (2)
모찌율 | 2023.12.05 | 추천 0 | 조회 37
모찌율 2023.12.05 - 37
64569 VBA
New vba 행 추가 매크로에서 마지막 행 자동으로 찾는 방법 문의 합니다. (3)
짜장좋아 | 2023.12.05 | 추천 0 | 조회 40
짜장좋아 2023.12.05 - 40
64568 문서서식
New 엑셀 띄워쓰기 없애기가 안될때 방법 좀 (2)
딸기아빠 | 2023.12.05 | 추천 0 | 조회 45
딸기아빠 2023.12.05 - 45
64567 함수/공식
New Gantt 달력 양식의 표에서 해당되는 날짜 추출하는 방법 (3)
7rhk**** | 2023.12.05 | 추천 0 | 조회 48
7rhk**** 2023.12.05 - 48
64565 함수/공식
New 엑셀에서 순서정하기 (7)
하늘사랑 | 2023.12.05 | 추천 0 | 조회 51
하늘사랑 2023.12.05 - 51
64563 함수/공식
New SUMIFS 함수 문의 첨부파일 (3)
Rachel | 2023.12.05 | 추천 0 | 조회 43
Rachel 2023.12.05 - 43
64558 기능/도구
New 값만 붙여넣기 (기본기능으로요) (4) 답변완료
조용원 | 2023.12.05 | 추천 0 | 조회 57
조용원 2023.12.05 - 57
64557 VBA
New 검색 매크로를 만들고 싶습니다ㅜㅜ 엑셀파일첨부파일 (5)
c571**** | 2023.12.05 | 추천 0 | 조회 63
c571**** 2023.12.05 - 63
64555 피벗테이블
New 행/열 바꿈 첨부파일 (5) 답변완료
sang**** | 2023.12.05 | 추천 0 | 조회 46
sang**** 2023.12.05 - 46
64554 함수/공식
New sumifs 로 누계합 구하기 짋문 엑셀파일
슈토파이터 | 2023.12.05 | 추천 0 | 조회 44
슈토파이터 2023.12.05 - 44
64551 함수/공식
New countif 중복값 관련 문의드립니다. 엑셀파일 (2)
juyoun**** | 2023.12.05 | 추천 0 | 조회 39
juyoun**** 2023.12.05 - 39
64549 함수/공식
New 숫자에 천단위 쉼표 표시하고 싶습니다. 첨부파일 (2) 답변완료
자라는토끼 | 2023.12.05 | 추천 0 | 조회 49
자라는토끼 2023.12.05 - 49
64546 대시보드
New 슬라이서에서 영문월 정렬 방법 문의 첨부파일 (2)
wjdrud**** | 2023.12.05 | 추천 0 | 조회 33
wjdrud**** 2023.12.05 - 33
64545 함수/공식
New Sort,Filter 함수에서 Offset을 사용한 동적범위 적용 가능할까요? 엑셀파일 (2)
경기광주아재 | 2023.12.05 | 추천 0 | 조회 34
경기광주아재 2023.12.05 - 34
64542 함수/공식
New 합계를 구하는 수식을 알고 싶습니다. 엑셀파일첨부파일 (3)
033cola | 2023.12.05 | 추천 0 | 조회 46
033cola 2023.12.05 - 46
64541 함수/공식
New 엑셀 3가지 단어가 들어간 내용 찾아내기 (5) 답변완료
엑셀렙업용 | 2023.12.05 | 추천 0 | 조회 53
엑셀렙업용 2023.12.05 - 53
64540 함수/공식
New 여러손님이 몇번째 방문했는지 어떻게 수식을 짜면 될까요? (2) 답변완료
베라베라 | 2023.12.05 | 추천 0 | 조회 40
베라베라 2023.12.05 - 40