엑셀

Excel에서 작성한 Chart를 Word로 옮기기

파란바람이 2020. 5. 20. 20:31

Excel에서 만든 Chart가 아주 많아 일일이 하나씩 옮기는건 너무 힘들어 한꺼번에 옮길 방법이 없냐는 질문이 왔습니다.

 

실습 파일 다운로드

엑셀 차트를 워드로 복사.zip
0.03MB

실습 파일은 압축 파일인데, 압축을 해제하면 엑셀 파일과 워드 파일이 있습니다.

엑셀 파일에 VBA 코드가 있고, 워드 파일은 엑셀 차트가 복사될 파일입니다.

꼭 같은 폴더에 있어야 코드가 정상적으로 동작합니다.

 

파일을 보내지 않아서 예시로 차트 3개를 만들었습니다.

한 시트에 3개 차트를 만들었는데, 여러 개 시트에 있어도 실행하는데는 어려움이 없습니다.

VBA 코드에서 Word 개체를 불러와 사용해야 하므로 Word 개체를 참조로 추가해야 합니다.

VBE를 실행해서 [도구] - [참조]를 실행합니다.

[사용 가능한 참조]에서 'Microsoft Word 16.0 Object Library'를 선택하고 [확인]을 누릅니다.

 

이제 엑셀에서 워드 개체를 불러와 사용할 수 있습니다.

코드는 내용 그대로 입니다.

Public Sub 차트복사()
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.document
    
    Set wrdApp = CreateObject("Word.Application")
    Set wrdDoc = wrdApp.documents.Open(ThisWorkbook.Path & "\차트 복사 테스트.docx")
    
    For i = ActiveSheet.ChartObjects.Count To 1 Step -1
        ActiveSheet.ChartObjects(i).Activate
        ActiveChart.ChartArea.Copy
        
        wrdDoc.Content.PasteAndFormat wdChartPicture
        wrdDoc.Content.InsertParagraphAfter
    Next i
    
    wrdDoc.Save
    wrdDoc.Close
End Sub

 

코드를 작성할 때 문제가 있었는데, 엑셀 차트를 복사해 붙여넣기 하면 나중에 붙여넣은 차트가 워드 파일 앞쪽에 나타나는 것입니다.

 

엑셀과 달리 복사한 차트를 붙여넣을 위치를 지정하는 방법을 찾을 수 없었습니다.

꽤 오래 검색을 했는데 찾을 수 없어 마지막 차트부터 붙여 넣는 방법으로 문제를 풀었습니다.

 

엑셀 VBA는 익숙하지만 워드나 파워포인트는 VBA를 쓸 기회가 많이 없어서 아주 단순한 기능도 모르는 경우가 많습니다.

 

틀림없이 찾아보면 찾을 수 있을텐데 당장은 빨리 문제를 해결하는게 필요하니 다음 기회로 미룹니다.