excel目标图表以ppt特定占位符

时间:2013-04-04 11:35:28

标签: javascript excel vba powerpoint

我需要将一些图表从excel复制到ppt演示文稿。演示文稿与某些占位符保持一致,以便接收不时更新的图表。我需要能够决定哪些图表会占用哪个占位符,因为我希望能够在没有约束的情况下更改excel文件或ppt。因此,我想使用带有外部字典的.json文件,该字典告诉我哪张表从哪个图表转到哪个幻灯片占位符。看起来像这样

{'chart1':{'xl_sheet_name':'Summary numbers',
       'xl_chart_name':'Chart 9',
       'ppt_tgt_slide':10,
       'ppt_tgt_placeholder':2},
 'chart2':{'xl_sheet_name':'Summary numbers',
       'xl_chart_name':'Chart 10',
       'ppt_tgt_slide':10,
       'ppt_tgt_placeholder':3},
 'chart3':{'xl_sheet_name':'Summary numbers',
       'xl_chart_name':'Chart 11',
       'ppt_tgt_slide':10,
       'ppt_tgt_placeholder':4}}

然后代码

Sub charts_2_ppt()
Dim strText As String
Dim lib As New JSONLib
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide

'Reference existing instance of PowerPoint
Set PPApp = GetObject(, "Powerpoint.Application")
'Reference active presentation
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewSlide

strText = GetFileContent(ThisWorkbook.Path & "\parameters.json")

Set charts_dict = lib.parse(CStr(strText))

'routine
For Each v In charts_dict
    Worksheets(charts_dict(v)("xl_sheet_name")).ChartObjects(charts_dict(v)("xl_chart_name")).Copy 'ChartArea.Copy
    With PPPres
        .Slides(charts_dict(v)("ppt_tgt_slide")).Select 'otherwise it's messed up.
        .Slides(charts_dict(v)("ppt_tgt_slide")) _
            .Shapes.Placeholders(charts_dict(v)("ppt_tgt_placeholder")).Select 'msoCTrue
        .Windows(1).View.PasteSpecial '(ppPasteMetafilePicture)
    End With

    'Sheets(charts_dict(v)("xl_sheet_name")) _
        .ChartObjects(charts_dict(v)("xl_chart_name")).Chart.HasTitle = True

Next

Set charts_dict = Nothing
Set lib = Nothing
End Sub

Function GetFileContent(Name As String) As String
Dim intUnit As Integer

On Error GoTo ErrGetFileContent
intUnit = FreeFile
Open Name For Input As intUnit
GetFileContent = Input(LOF(intUnit), intUnit)
ErrGetFileContent:
Close intUnit
Exit Function
End Function

可能改编自john peltier的网站和我在网上找到的其他一些东西。 字典的意思是在幻灯片中我有4个占位符,第一个是标题,而不是有三个图表要粘贴。我做了一个循环因为图表会很多,不同的幻灯片。我把它从VBA中拿出来,因为它看起来更好,能够快速改变它。

我的问题是,当我运行代码时,第三个占位符显然没有被选中,图表被粘贴在幻灯片的中间,而不是粘贴到它所属的位置。

你能帮助我让它发挥作用和/或提出其他合适的方法吗?

非常感谢,

菲利普

ps我用于解析javascript的类,我最初在网上找到它,但现在链接已关闭。无论如何我改变了一些东西,所以这里是: my java parser

0 个答案:

没有答案