格式化在VBA中复制/粘贴图表

时间:2014-11-07 14:08:34

标签: vba charts

目前,我有一些代码可以将一些图表粘贴到新创建的工作表上,然后将该工作表转换为pdf。但是,如果图形超出一页,则图形将在两页之间的中间截止。我如何确保不会发生这种情况?我应该专门创建一个模板来复制/粘贴这些图形吗?

以下是复制/粘贴图表的部分。

 x = 1
    y = 1
    For i = 1 To source.ChartObjects.Count
            title_name = source.ChartObjects(i).Chart.ChartTitle.Text

            If InStr(Replace(title_name, ",", ""), search) > 0 Then

                source.ChartObjects(i).Activate
                ActiveChart.ChartArea.Copy

                wsTemp.Cells(x, y).PasteSpecial
                x = x + 20


            End If

        Next
Next

        wsTemp.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NewFileName, Quality:=xlQualityStandard, _
               IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
        wsTemp.Delete
        Application.DisplayAlerts = True
LetsContinue:
        With Application
            .ScreenUpdating = True
            .DisplayAlerts = True
        End With
        Exit Sub
Whoa:
        MsgBox Err.Description
        Resume LetsContinue
End Sub

1 个答案:

答案 0 :(得分:0)

这取决于用于创建PDF的过程。如果它正在使用工作表的PrintArea并转换它,那么你可以这样做

1.粘贴图形时,还应将打印区域设置为覆盖图形的宽度 有点像这样的东西:

rngPrintArea = Range(wsTemp.cells(1,1), wsTemp.cells(x, y + 1))
wsTemp.PageSetup.PrintArea = rngPrintArea.Address

2。如果此问题与电子表格中的PrintArea不同,那么 之所以发生,是因为图的宽度只是大于 使用PDF程序然后分配给1页的固定大小 需要减小粘贴图的大小。

ActiveChart.Width = 10 ' Change 10 to whatever width is acceptable for the PDF procedure
ActiveChart.Heigth = 10 ' Change 10 to whatever height is acceptable for the PDF procedure