excel目标图表,以特定的占位符

我需要从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 

可能改编自约翰·珀尔帖的网站和我在网上find的其他东西。 词典的含义是,在幻灯片中我有4个占位符,第一个是标题,比有三个图表要粘贴。 我做了一个循环,因为图表会变得很多,到不同的幻灯片。 我把它从VBA中拿出来,因为它看起来更好,并且能够快速更改它。

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

你能帮我做一下工作和/或build议其他合适的方法吗?

非常感谢,

菲利波

PS我用于parsingJavaScript的类,我最初发现它在线,但现在的链接是closures的。 无论如何,我改变了这样的东西: 我的Javaparsing器 。