2012-10-10 70 views
1

我希望smeone可以帮助我解决这个问题。我想从excel中获取dta并将其粘贴到功能点图表中,就像手动执行代码一样。我想自动创建一个标准的演示文稿,我经常为不同的客户群创建。 (我正在处理SAS中的数据,并将其从SAS展现为每次都具有相同标签和格式的excel文件)将excel数据粘贴到powerpoint图表数据表中

我能够编写附加宏,这只是第一次尝试使用虚拟日期它将如何工作,并且我从其他网络来源中大量复制。它正在工作,直到此时结束。它打开spower点,用我的模板创建一个页面,并添加一个正确类型的图表。它打开该图表的数据表。问题是我无法粘贴数据。

我相信我没有正确地引用sorce excel表格,所以VBA越来越流行(因为它应该)。可以有人exlain我如何做到这一点。最后,我可能会修改这个来打开一个现有的图表并粘贴新的数据,因为Irather做了一次所有代码的格式化操作(我也准备好了基本的表示方法)。但我需要能够粘贴数据。

在这个网站和其他地方有很多关于如何将图表从Excel复制到PPT的例子,但我不想这么做,我希望PPT存储数据,以便在创建后可以修改它如所须。然而,我却没有找到一个能够完成我想完成的任务。

如果它的事项,我使用的Office 2010

在此先感谢任何人谁可以帮助我。

马里奥

子试验()

Set ObjPPT = CreateObject("PowerPoint.Application") 
Set ObjPresentation = ObjPPT.Presentations.Add 
ObjPresentation.ApplyTemplate ("C:\Documents and Settings\ewnym5s\My Documents\Tools\Clean PPT Page.potx") 
Set ObjSlide = ObjPresentation.Slides.Add(1, 12) 
Set mychart = ObjSlide.Shapes.AddChart(xlBarClustered, 200, 200, 500, 200).Chart 

Set wb = mychart.ChartData.Workbook 
Set ws = wb.Worksheets(1) 
ws.ListObjects("Table1").Resize ws.Range("A1:D6") 


Sheets("Sheet1").Select 
Range("A1:D6").Select 
Selection.Copy 

'The macro works perfectly up to here. The data is on Excel Sheet1 A1:d6 and it needs to be pasted to the same range on Sheet1 of the PPT data sheet. 

“我可以看到数据被选择并复制如果切换窗口,同时逐步执行代码。只是粘贴部分不工作。

ws.Range("A1").Paste 

回答

0

您可以使用.value参数设置不同范围之间的值。这将只有虽然在单元格中设置的值,没有任何格式将被保留。如果只是图表的数据,这应该不重要。无论如何,你总是可以使用VBA进行格式化。设置该值也比在Excel VBA中复制和粘贴效率高很多。

由于源和目标都Excel区域下面的工作:

ws.Range("A1:D6").Value = Range("A1:D6").Value 
1

谢谢两位张贴这个,因为它是我有一个很难找到自己的东西!这里是代码与变化的清理版本做出的,这样你可以拖放这一点,并准备去(例如声明的变量和调整,以获取代码正常工作)

Sub test() 

Dim ObjPPT As PowerPoint.Application 
Dim ObjPresentation As PowerPoint.Presentation 
Dim ObjSlide As PowerPoint.Slide 
Dim mychart As PowerPoint.Chart 
Dim wb As Workbook 
Dim ws As Worksheet 
Dim MainWorkbook As String 

Set ObjPPT = CreateObject("PowerPoint.Application") 
Set ObjPresentation = ObjPPT.Presentations.Add 
ObjPresentation.ApplyTemplate ("C:\Documents and Settings\ewnym5s\My Documents\Tools\Clean PPT Page.potx") 
Set ObjSlide = ObjPresentation.Slides.Add(1, 12) 
Set mychart = ObjSlide.Shapes.AddChart(xlBarClustered, 200, 200, 500, 200).Chart 

Set wb = mychart.ChartData.Workbook 
Set ws = wb.Worksheets(1) 
ws.ListObjects("Table1").Resize ws.Range("A1:D6") 

MainWorkbook = ThisWorkbook.Name 
Windows(MainWorkbook).Activate 
Sheets("Sheet1").Select 
Range("A1:D6").Select 
Selection.Copy 
ws.Range("A1:D6").Value = Range("A1:D6").Value 

End Sub 
+0

嗨@Lynxhazard,运行代码时出现“用户定义类型未定义”错误。我添加了对Microsoft PowerPoint库的引用,所以我不确定为什么会发生这种情况。 – RTrain3k