Изменение размера области печати динамически, чтобы увидеть усеченный текст в оси категорий кластеризованной гистограммы - PullRequest
0 голосов
/ 18 октября 2019

Я копирую и вставляю Clustered Bar charts из Workbook в Powerpoint deck, созданный динамически. Гистограмма Категория Ось может иметь длинный текст (метки Оси), который иногда усекается. Параметр Wrap text для оси категорий - greyed out. Поэтому я хочу переместить Plot Area of the Chart to the Right dynamically, чтобы сделать усеченный текст по оси категорий видимым.

enter image description here

Sub ExportClusteredBarChartsToPowerpoint()
    Dim oPPT As Object: Set oPPT = CreateObject("PowerPoint.Application")
    With oPPT
        .Visible = True
        .Activate
    End With

    Dim oPres As Object: Set oPres = oPPT.presentations.Add
    Dim oSlide As Object
    Dim iNdx As Integer
    Dim oChart As ChartObject
    Dim oWS As Worksheet: Set oWS = ThisWorkbook.Sheets("ChartsSheet")

    iNdx = 1
    With oWS
        For Each oChart In oWS.ChartObjects

            oChart.Chart.ChartArea.Copy

            Set oSlide = oPres.slides.Add(iNdx, 12)       'ppLayoutBlank
            oSlide.Shapes.PasteSpecial 0, msoFalse           '0=ppPasteDefault
            Application.CutCopyMode = False

            With oSlide.Shapes(1)
                .ScaleWidth 1.75, 0, 1 'msoTrue, msoScaleFromMiddle
                .ScaleHeight 1.75, 0, 1 'msoTrue,msoScaleFromMiddle
                oPPT.Windows(1).View.ZoomToFit = False
                oPPT.Windows(1).View.Zoom = 98
            End With
            iNdx = iNdx + 1
        Next oChart
    End With    
End Sub

Возможно ли это или есть альтернатива? решение с использованием VBA?

1 Ответ

1 голос
/ 18 октября 2019

Это расширит область левой оси на 50 точек при каждом запуске:

With oSlide.Shapes(1)
  If .HasChart Then
    With .Chart.PlotArea
      .Width = .Width - 50
      .Left = .Left + 50
    End With
  End If
End With
...