[그림바꾸기]-[클립보드에서]를 VBA로 구현하는 방법 문의

VBA
작성자
dra****
작성일
2021-05-01 23:10
조회
51

기존의 Shape객체 안에 있는 그림을 복사하여 다른 개체에 붙여넣기를 동적으로 하려 합니다.

메뉴에서 [그림바꾸기] - [클립보드에서] 이렇게 클릭하면 자연스럽게 바뀌는데,

이 부분을 VBA 코드로 구현하는 방법을 알고 있습니다. 자동 매크로로는 코드가 생성이 되지 않습니다. ㅠㅠ

Set pic1 = Sheet1.Shapes("Picture1")

Set pic2 - Sheet1.Shapes("Picture2")

Pic1.Copy  or  Pic1.CopyPicture xlScreen, xlPicture

여기서 Pic1의 사진을 복사하여 Pic2에 붙여 넣기를 하고 싶습니다.

이부분이 구현이 안 됩니다. 리본 메뉴의 [그림바꾸기]-[클립보드에서]를 클릭하면 바로 됩니다.

하지만 지식이 짧아 제가 아는 어떠한 VBA 코드로도 구현이 안되네요.

고견 부탁 합니다.

 

PS) 원본에서 복사하여 시트에 붙여 넣기하고 기존의 개체(Target)을 삭제하는 방식이나,

Chart객체를 새로 생성하여 붙여 넣기 하는 방법은 좀 번거롭습니다. (위치, 사이즈, 도형 포맷 등등)

매 클릭마다 동적으로 바뀌어야 할 그림의 개체가 많이 시스템에 과부하가 걸립니다.

회원등급 : 가지2단계
포인트 : 569 EP
총질문 : 1 개 (마감율 : 0%)
채택답변 : 9 개
전체 4

  • 2021-05-02 17:52

    안녕하세요.

    아래 예제파일과 완성된 코드를 확인해보시겠어요?

    VBA 개체 속성을 살펴봤는데, 클립보드로 복사/붙여넣기 하는 속성이 없는 것으로 보아 더 아래쪽 백엔드단에서 동작되거나 잘라서/붙여넣기 하는 작업을 빠르게 진행하는 것으로 보입니다.

    제시해드린 답변이 문제해결에 도움이 되셨길 바랍니다. 감사합니다.

    Sub PasteImgFromClipboard(PicName As String)
    
    '###############################################################
    '오빠두엑셀 VBA 사용자지정함수 ([https://www.oppadu.com](https://www.oppadu.com/))
    '■ PasteImgFromClipboard 함수
    '■ 클립보드로 복사한 이미지를 도형 위에 붙여넣기(그림바꾸기) 합니다.
    '■ 인수 설명
    '_____________PicName       : 복사된 이미지로 교체할 대상 이미지입니다.
    '■ 사용 예제
    'PasteImgFromClipboard "그림 1"
    '###############################################################
    
    Dim pic As Shape: Dim oPic As Shape: Dim WS As Worksheet
    Dim rng As Range
    Dim dtop As Double: Dim dleft As Double
    Dim objText As String
    Dim obj As MSForms.DataObject
    
    On Error GoTo Err:
    Set oPic = ActiveSheet.Shapes(PicName)
    Set WS = oPic.Parent
    Set obj = New MSForms.DataObject
    obj.GetFromClipboard
    
    On Error GoTo isImage
        objText = obj.GetText
    Exit Sub
        
    isImage:
    With oPic
        Set rng = .TopLeftCell
        dtop = .Top
        dleft = .Left
        .Delete
    End With
    
    WS.Paste rng
    
    With WS.Shapes(Sheet1.Shapes.Count)
        .Top = dtop
        .Left = dleft
    End With
    
    Exit Sub
    
    Err:
    MsgBox "도형 이름이 올바른지 다시 확인하세요"
    
    End Sub
    

     

    이미지-복사-붙여넣기.gif

    첨부파일 : 이미지-붙여넣기-그림바꾸기-예제.xlsm


    • 2021-05-02 18:09

      답글 감사합니다.

      수동으로) 첮번째 객체를 선택해서 복사하고 두번째 객체를 선택한 후 [그림바꾸기]-[클립보드에서]를 선택한 단 0.1초의 지체도 없이 그림이 복사가 됩니다.

      문제는 위에 언급하신 방법으로 구현 했을 때 약 40개의 정도의 Shape 개체를 순차적으로 그리고 지우고를 반복하면 ScreenUpdating을 꺼 놓아도 지연이 꽤 됩니다. 2일 동안 온갖 방법을 해 보았는데, [그림바꾸기]-[클립보드에서] 만큼 빠르지가 않습니다. 이 부분은 mouse_event API를 통해서 실험을 해 보았습니다.

      혹시라도 위의 방법이 아닌 다른 방법을 찾으신다면 동영상 강의나 댓글로 좀 부탁 드리겠습니다.

      만약 그 사이 제가 방법을 찾아 내면 자게판에 정보 공유를 하겠습니다.

      바쁘신 와중에 시간 내어 답글 달아주셔 감사합니다.

      진정한 "COPY-LEFT"를 계속 실천해 주셔요 ~ 누군가에게는 정말 많은 도움이 될 수 있습니다.


      • 2021-05-04 19:47

        음.. 그렇군요. 확실히 VBA만으로는 차트나 도형을 제어하는데 제한이 많은 편이죠..ㅜ

        API까지는 확인해보지 않았지만, 제 추측(?) 으로는 Selection 으로 동작하는 코드여서 VBA 개체 속성으로 검색이 안되는 것으로 생각됩니다. 잘 아시겠지만 차트나 도형 관련 명령문 중, 특히 도형을 직접 편집해야 하는 코드일 경우에는 개체를 Set 해서 실행하지 못하고 반드시 Select 한 후 실행해야 하는 속성이 몇가지 있는데, 아마 클립보드로 붙여넣기도 그런 경우 중 하나가 아닐까 생각됩니다..

        아마 이 내용은 MS 개발자 포럼에 문의하면 향후 업데이트 이 수정이나 관련한 답변을 받을 수 있을 것 같기도 한데, 자주 사용되는 기능은 아니다보니 정확한 답변을 해줄지는 모르겠네요.. 🙁

        https://social.msdn.microsoft.com/Forums/en-US/home?forum=isvvba


        • 2021-05-04 20:14

          일단 개발자 포럼에 문의를 해보겠습니다. 계속 고민하다 보면 언젠가는 답이 나오겠지요. ^^

          이리 신경 써 주셔서 감사합니다. 가끔씩 자게판에 제가 고민하면서 해결한 코딩을 올리도록 하겠습니다.

          보시고 강의로 만들어 주시면 더 많은 사람들에게 혜택이 가지 않을까 합니다.

          제가 유튜브 같은 거 만드는 데는 소질이 없어서.


전체 2,958
번호 카테고리 제목 작성자 작성일 추천 조회
2946 함수/공식
New 총데이터시트에서 해당텍스트 클릭 시 다른시트에 원하는 내용이 자동으로 입력? 첨부파일 (1)
확그냥막그냥 | 08:58 | 추천 0 | 조회 8
확그냥막그냥 08:58 0 8
2945 함수/공식
New 주식 자동 리밸런싱 계산 가능할까요? 첨부파일
qnd | 01:00 | 추천 1 | 조회 14
qnd 01:00 1 14
2944 문서서식
New 사용자 지정 정렬 첨부파일 (1)
wbyu**** | 2021.05.14 | 추천 0 | 조회 18
wbyu**** 2021.05.14 0 18
2943 함수/공식
New 동적범위 적용 질문
두부 | 2021.05.14 | 추천 0 | 조회 17
두부 2021.05.14 0 17
2942 함수/공식
New 가로방향으로 수집되는 값을 세로방향으로 나열하는 법 첨부파일 (1)
녹차라면 | 2021.05.14 | 추천 0 | 조회 36
녹차라면 2021.05.14 0 36
2941 대시보드
New 간트차트 상 병합된 셀의 필터링 &진척도 표시 관련 첨부파일 (1)
asuka | 2021.05.14 | 추천 0 | 조회 26
asuka 2021.05.14 0 26
2940
New INDEX 함수앞 -- 표시는 어떨때 사용하나요? 첨부파일 (1)
무궁화 | 2021.05.14 | 추천 0 | 조회 41
무궁화 2021.05.14 0 41
2939
New 안녕하세요 ~ VBA 카카오톡 관련문의 입니다 (2)
호기윤 | 2021.05.14 | 추천 0 | 조회 33
호기윤 2021.05.14 0 33
2938 함수/공식
New 교차판매 (cross-selling)분석을 위해 어떻게 가공해야하는지 모르겠습니다 ㅠ (1)
동엽 | 2021.05.13 | 추천 0 | 조회 41
동엽 2021.05.13 0 41
2937 함수/공식
New 엑셀 함수질문있습니다. 첨부파일 (1)
BackGom | 2021.05.13 | 추천 1 | 조회 43
BackGom 2021.05.13 1 43
2936 함수/공식
New 전체직원에서 중복되지 않은 값을 다른곳에 추출 ! 도와주세요 ㅠ 첨부파일 (2) 답변완료
E | 2021.05.13 | 추천 0 | 조회 52
E 2021.05.13 0 52
2935 문서서식
New 데이터 정규화 도와주세요.... 첨부파일
닉뿡뿡 | 2021.05.13 | 추천 1 | 조회 52
닉뿡뿡 2021.05.13 1 52
2934 함수/공식
New 안녕하세요 이 함수식의 해석좀 부탁드려도 될까요 (2) 답변완료
Hynix | 2021.05.13 | 추천 0 | 조회 55
Hynix 2021.05.13 0 55
2933 문서서식
New 셀병합 세로로 병합된 범위 문제 (1)
엑셀고수왕소취 | 2021.05.13 | 추천 0 | 조회 39
엑셀고수왕소취 2021.05.13 0 39
2932 피벗테이블
New 피벗테이블 행 필드 순서변경 질문드립니다. 첨부파일 (1)
월마리아 | 2021.05.12 | 추천 0 | 조회 26
월마리아 2021.05.12 0 26
2931 VBA
New VBA 문제 관련 (VBA를 사용하여 사진 옮기기) 첨부파일 (7) 답변완료
철모대장 | 2021.05.12 | 추천 0 | 조회 59
철모대장 2021.05.12 0 59
2930 VBA
New 이건 VBA로 해결해야 할 것 같습니다. 첨부파일 (3) 답변완료
. | 2021.05.12 | 추천 1 | 조회 78
. 2021.05.12 1 78
2929 VBA
New 행방향 필터 문의드립니다 ( 가로필터) 첨부파일 (2)
김희주 | 2021.05.12 | 추천 0 | 조회 65
김희주 2021.05.12 0 65
2928 문서서식
New 도와주세요! 매크로 말고 서식 설정으로 숫자와 한글 같이 나오게 할 수 있나요? (2)
회계직원 | 2021.05.12 | 추천 0 | 조회 40
회계직원 2021.05.12 0 40
2927 차트/그래프
엑셀 간트차트 자동화 양식 (진행상황, 업무흐름 표시) 문의 (2) 답변완료
비엘 | 2021.05.12 | 추천 1 | 조회 70
비엘 2021.05.12 1 70
2926 함수/공식
날짜 일수별 사용현황 합계 분석이 가능할까요 (3)
쭈니준이 | 2021.05.12 | 추천 0 | 조회 49
쭈니준이 2021.05.12 0 49
2925 함수/공식
엑셀 수량 집계 함수 질문합니다. (1)
상길 | 2021.05.11 | 추천 1 | 조회 51
상길 2021.05.11 1 51
2924 함수/공식
다량의 데이터에서 특정값을 포함하는 행 추출방법 첨부파일 (1)
고래 | 2021.05.11 | 추천 0 | 조회 68
고래 2021.05.11 0 68
2923 함수/공식
엑셀 A라는 파일에 엑셀 1월, 2월,3월 각 파일을 가지고 A라는 파일에 매달 업데이트 하는 방법 도와주세요! (5)
jyk0077@hanmail.net | 2021.05.11 | 추천 2 | 조회 78
jyk0077@hanmail.net 2021.05.11 2 78
2922 VBA
이게 가능할까요 ? (2)
12394 | 2021.05.11 | 추천 0 | 조회 83
12394 2021.05.11 0 83
2921 VBA
패턴을 찾아 색칠해 주는 방법 문의 첨부파일 (4)
눈사람 | 2021.05.11 | 추천 0 | 조회 52
눈사람 2021.05.11 0 52
2920 파워쿼리/피벗
ximage 함수조정등으로 이미지링크외 기타 웹페이지캡쳐 다운
오재석 Diego | 2021.05.11 | 추천 1 | 조회 60
오재석 Diego 2021.05.11 1 60
2919 함수/공식
엑셀 다중조건을 만족하고 중복값 제거 후 고유값 개수 카운트 공식 문의 첨부파일 (1)
우와토넛 | 2021.05.10 | 추천 0 | 조회 68
우와토넛 2021.05.10 0 68
2918 VBA
자동 셀병합 함수 오류 (1)
꼬구마 | 2021.05.10 | 추천 0 | 조회 41
꼬구마 2021.05.10 0 41
2917 파워쿼리/피벗
엑셀로 카카오톡 대화내용을 읽어들여 올 수 있나요? (2) 답변완료
만법귀일 | 2021.05.10 | 추천 0 | 조회 101
만법귀일 2021.05.10 0 101