2012-10-10 118 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

相關問題