Excel 2013을 사용하고 있습니다. 하나의 Excel 통합 문서에 여러 차트를 PDF 파일로 저장하려고합니다. 차트는 데이터가있는 다른 시트에 있습니다. 따라서 각 시트에서 차트를 선택하고 하나의 PDF 파일로 저장해야합니다. pdf 파일의 한 페이지에 하나의 차트가 필요합니다. 이것을 할 수있는 방법이 있습니까? 지원에 감사드립니다.Excel에서 여러 개의 차트를 하나의 PDF 파일로 저장
감사합니다. Jeannine
Excel 2013을 사용하고 있습니다. 하나의 Excel 통합 문서에 여러 차트를 PDF 파일로 저장하려고합니다. 차트는 데이터가있는 다른 시트에 있습니다. 따라서 각 시트에서 차트를 선택하고 하나의 PDF 파일로 저장해야합니다. pdf 파일의 한 페이지에 하나의 차트가 필요합니다. 이것을 할 수있는 방법이 있습니까? 지원에 감사드립니다.Excel에서 여러 개의 차트를 하나의 PDF 파일로 저장
감사합니다. Jeannine
차트가있는 시트를 선택하고 PDF로 저장하십시오.
리플렉션에서 다소 번거롭기는하지만 맞춤 설정할 수있는 VBA 솔루션은 무엇입니까? 코드를 표준 코드 모듈에 넣고 outputPath를 자신의 것으로 대체하십시오. 접근 방식은 별도의 시트에 레이아웃을 작성한 다음 시트를 .pdf로 내보내는 것입니다. 이 예제에서는 통합 문서에 "작성"이라는 시트가 있는지 확인하십시오 (아마도 이렇게 할 코드를 추가하십시오).
Option Explicit
Sub chartsTopdf()
Dim outSheet As Worksheet, sht As Worksheet
Dim RngToCover As Range
Dim chtObj As ChartObject
Dim outputPath As String, fileStem As String
Dim chHeight As Long, chWidth As Long
Dim topM As Integer, botM As Integer, rightM As Integer
Dim n As Integer, pbRow As Integer, rwOffset As Integer
Dim chrt As String
Set outSheet = Sheets("Compose")
outputPath = "C:\Data\Barry\VBA\SO\"
fileStem = "Charts"
'these values in 'points'
topM = 60
botM = 60
rightM = 60
'these values in 'rows'
pbRow = 1
rwOffset = 8
chHeight = 12
chWidth = 5
Set RngToCover = Cells(chHeight, chWidth)
n = 0
With ThisWorkbook
With outSheet
.ResetAllPageBreaks
.ChartObjects.Delete
With .PageSetup
.Orientation = xlPortrait
.PrintArea = ""
.TopMargin = topM
.BottomMargin = botM
.RightMargin = rightM
End With
End With
For Each sht In .Worksheets
If Not sht.Name = outSheet.Name Then
'Copy Chart
Set chtObj = sht.ChartObjects(1)
chtObj.Copy
With outSheet
.Paste
n = n + 1
Set RngToCover = .Range(.Cells(pbRow + rwOffset, 1), .Cells(pbRow + rwOffset + chHeight, 1 + chWidth))
Set chtObj = .ChartObjects(n)
chtObj.Height = RngToCover.Height ' resize
chtObj.Width = RngToCover.Width ' resize
chtObj.Top = RngToCover.Top ' reposition
chtObj.Left = RngToCover.Left ' reposition
'add hpage break
.HPageBreaks.Add before:=.Cells(pbRow + rwOffset + chHeight, 1 + chWidth).Offset(2, 0)
pbRow = .HPageBreaks(n).Location.Row
End With
End If
Next sht
ActiveCell.Select
'set essential page parameters
With outSheet.PageSetup
.Orientation = xlPortrait
.PrintArea = ""
.TopMargin = topM
.BottomMargin = botM
.RightMargin = rightM
End With
'produce pdf file
outSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
outputPath & fileStem & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
End Sub
은 또한 관심을 가질 존 펠티어하여이
interesting article을 사용했다.
감사합니다. – Jeannine
당신의 Q에 대답하면 '틱'을 클릭하여 대답을 '수락'합니다. 이것은 그것이 해결되었음을 나타냅니다. – barryleajo