파워포인트에 삽입된 차트가 연결로 삽입되었다가 원본엑셀파일이 사라져서 엑셀 데이터를 수정하지 못할 때
How to recover the excel data from a chart whose excel link is broken
참고: 지식인
일단엑셀의 혹시 원본 경로가 잘못되었는지부터 확인해보세요.
파일 > 정보에서 '파일연결편집'을 눌러보면 엑셀파일이 있어야할 경로가 보입니다.
파일은 있는데 경로가 바뀌었다면 '원본 변경'을 눌러서 바꿀 수 있습니다.
현재로서는 연결된 원본 XLSx 파일이 없기 때문에 엑셀데이터 원본을 그대로 되살리기 어렵습니다.
다만, 아래 VBA를 이용하면 파워포인트 차트에 남아있는 데이터를 이용해서 데이터 숫자는 복구해볼 수 있습니다.
더보기
Option Explicit
Sub RecoverData()
Dim oSld As Slide
Dim oShp As Shape
Dim xlApp As Object ' New Excel.Application
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Dim xlBook As Object 'Excel.Workbook
Set xlBook = xlApp.Workbooks.Add
Dim xlSht As Object 'Excel.Worksheet
Dim c%
On Error Resume Next
xlApp.ScreenUpdating = False
For Each oSld In ActivePresentation.Slides
For Each oShp In oSld.Shapes
If oShp.Type = msoChart Then
c = c + 1
If c = 1 Then
Set xlSht = xlBook.Worksheets(1)
Else
Set xlSht = xlBook.Worksheets.Add
End If
xlSht.Move After:=xlBook.Worksheets(xlBook.Worksheets.Count)
recoverDataFromChart xlSht, oShp
End If
Next oShp
Next oSld
xlApp.ScreenUpdating = True
'Set xlApp = Nothing
End Sub
Function recoverDataFromChart(oxlSht As Object, shp As Shape)
Dim sld As Slide
Dim cht As Chart
Dim srs As Series
Dim i%, x%
Set cht = shp.Chart
oxlSht.Name = shp.Name
'If cht.PlotBy = xlRows Then Debug.Print "xlRows"
For i = 1 To cht.SeriesCollection.Count
Set srs = cht.SeriesCollection(i)
For x = 1 To UBound(srs.XValues)
If i = 1 Then
oxlSht.Cells(x, i) = srs.XValues(x) 'Format(srs.XValues(x), "yy-mm-dd")
If shp.Parent.SlideIndex = 1 Then oxlSht.Cells(x, i).NumberFormat = "YYYY-MM"
ElseIf shp.Parent.SlideIndex = 2 Then oxlSht.Cells(x, i).NumberFormat = "MM-DD"
End If
oxlSht.Cells(x, i + 1) = srs.Values(x)
If shp.Parent.SlideIndex <> 3 Then oxlSht.Cells(x, i + 1).NumberFormat = "0.00%"
Next x
Next i
End Function
Alt-F11 누르고 모듈을 삽입한 다음 위 코드를 붙여넣고 실행하면
엑셀 파일을 하나 생성해서 모든 슬라이드의 차트의 데이터를 생성된 엑셀파일의 각 시트마다에 살려줍니다.
아래는 슬라이드 3의 차트 데이터를 엑셀 시트에 복구한 모습입니다.
자료의 형식은 사용자가 수정해줘야 합니다.
여기서는 데이터형식에 날짜와 숫자 등을 이 차트 형식에 맞도록 몇몇 셀등의 numberFormat 을 수정해주었습니다.
'XLS+VBA' 카테고리의 다른 글
영어단어와 뜻 OCR인식 결과 정리하기 (0) | 2023.06.12 |
---|---|
PPT파일 순서를 확인/정렬해서 합치기 (0) | 2023.02.11 |
구글 이미지 검색 결과 가져오기 (0) | 2023.02.01 |
JsonBag 클래스를 이용한 Json데이터 파싱 (0) | 2023.01.01 |
엑셀 데이터를 JSON형식으로 변환 (2) | 2022.01.13 |
Alt+F11 및 VBE창 금지/ 활성화 (0) | 2022.01.02 |
고프로(Gopro) 촬영한 동영상 MP4 파일명을 촬영날짜로 일괄 변경 (9) | 2021.04.17 |
엑셀 각 시트를 10행씩 끊어서 파워포인트 각 슬라이드에 붙여넣기 (0) | 2021.02.16 |
최근댓글