2013-05-29 74 views
6

在PowerPoint 2010或Word 2010中,當我選擇「插入」 - >「圖表」時,它會爲數據創建一個包含Excel工作表的新圖表。如何將宏添加到Word 2010或PowerPoint 2010圖表中?

如果我在Excel工作表中添加一個宏,當我關閉工作表並重新打開它時,這似乎被丟棄。

然而,可能有宏的圖表,因爲我也有,我在Office 2003中,它已經嵌入Excel圖表與宏創建一些Word文檔& PowerPoint演示文稿。當我將它們轉換爲Office 2010時,它們看起來就像「正常」的Office 2010圖表,但宏被保留。

當我選擇插入 - >圖表爲「pptx」格式而不是「pptm」格式時,它看起來就像我創建的嵌入圖表一樣,因此宏不會被保存。 (如果查詢ActiveWorkbook.FileFormat,我會得到「51」,即「Open Xml Spreadsheet」;這確實是「pptx」,與「Open Xml Spreadsheet with Macros」相反,即「52」)。 。

如何插入帶有「pptm」行爲的圖表?或者改變現有圖表的行爲?


注:我不想插入圖表「對象」,因爲這意味着該表不是宿主應用程序中編輯(它只是插入,你需要以「打開」 Excel圖表編輯它)。


讓我給你一個良好的開端......我可以實現我想通過下面的方法:

  1. 在Word中創建(或PowerPoint)一個新的文檔。
  2. 將文檔另存爲97-2003文檔(強制它進入兼容模式)。
  3. 使用Insert-> Object-> Microsoft Excel Chart插入圖表。這嵌入了一箇舊式的Excel圖表。
  4. 右鍵單擊打開嵌入的圖表,然後添加一個宏。
  5. 關閉圖表,然後選擇「文件」 - >「信息」,然後使用兼容模式「轉換」按鈕將文檔轉換爲Office 2010文檔。

現在您有一個「原生」Word或PowerPoint 2010圖表,您可以直接在Word或PowerPoint中編輯該圖表。如果您單擊圖表並選擇圖表工具 - >設計 - >編輯數據,則打開的Excel工作表中包含您在步驟4中創建的宏。成功!

現在,有沒有人有一個更簡單的方法?

+0

你可能只是能夠宏遷移到Word/PPT代碼模塊,正是如此操作ChartObject:HTTP:// stackoverflow.com/a/16263736/1467082。我通常不會寫入圖表的「ChartData」工作表,但如果需要的話可以這樣做。在PPT/DOC中有一些與ChartObjects一起工作的怪癖,但如果你熟悉Excel VBA,大多數人會熟悉它。 –

+0

@DavidZemens:是的,我*可以做到這一點,但在文檔中有幾十個圖表會變得非常混亂。對於我的目的來說,保持代碼與其操縱的圖表(數據)相關聯更實用。 –

+0

這有點難看,但你可以改爲嵌入Excel電子表格(插入 - >對象 - >從文件),因爲這將保留宏。我想這取決於宏是在做什麼以及如何觸發它們。 – CuberChase

回答

1

現在,賞金已經過去了(沒有更好的答案),我會添加我的問題的部分答案,以便能夠關閉問題。


  1. 在Word中創建(或PowerPoint)一個新的文檔。
  2. 將文檔另存爲 97-2003文檔(強制它進入兼容模式)。使用插入 - >對象 - > Microsoft Excel圖表插入 圖表。這嵌入了舊式Excel圖表 。
  3. 右鍵單擊打開嵌入圖表 - >打開, 並添加一個宏。
  4. 關閉圖表,然後選擇文件 - >信息並使用 兼容性模式「轉換」按鈕將文檔轉換爲 Office 2010文檔。

現在您有一個「原生」Word或PowerPoint 2010圖表,您可以直接在Word或PowerPoint中編輯該圖表。如果您單擊圖表並選擇圖表工具 - >設計 - >編輯數據,則打開的Excel工作表中包含您在步驟4中創建的宏。成功!

我仍然有興趣在能夠更直接地做到這一點...

2

在我看來,你可以實現你以下面的方式需要:

(不幸的是,我無法用圖片展示它和詳細的英語命令,我使用辦公室的地方不是英語版本)

  • 選擇插入>>對象>>對象...
  • 對象窗口採取第一頁(如新建
  • Microsoft Excel圖表(或類似的東西)搜索和按 OK
  • 你會得到工作簿中的兩片如圖所示 以下

enter image description here

(有功能區上的可用的圖表編輯功能)

  • 按Alt + F11,而你在圖版像 上面的圖片呈現。您將獲得打開Excel的IDE,您將在其中找到 適當的工作簿。
  • 添加新的模塊和宏有
  • 現在你可以退出圖表編輯 Word和保存文檔爲*.docm
  • 後,您將重新打開它,去圖表版(雙擊)>> Alt + F11 >>你會 找到你的宏保存在工作簿中*docm擴展名。
+0

不幸的是,這種方法創建了一個嵌入式Excel工作簿,而不是原生的Word或PowerPoint圖表。這不是我想要實現的。使用這種方法,圖表只能在激活後才能編輯(通過雙擊或通過右鍵單擊並選擇「打開」)。 –

+0

我認爲這是您引用的Office 2003中使用的選項。它像格式化一樣保留了許多Office 2007/2010的「原生圖表」功能。 –

+0

讓我解釋一下我的意思:如果我通過在Word或PowerPoint 2010中選擇「插入 - >圖表」創建圖表,則圖表實際上是一個Word/PowerPoint圖表,*不是* Excel圖表。 Word和PowerPoint對於這些圖表都有自己的對象模型,這與Excel版本類似,但不完全相同。當你創建這樣的圖表時,你可以選擇系列並在Word或PowerPoint中直接格式化,而不必在Excel中「激活」圖表。這是我試圖創建的那種圖表。 –

0

問題是如何在應用程序中保存圖表數據。轉換和發起是兩個不同的過程。你的數據系列基本上是一個數組而不是Excel表格。它只是使用Excel來顯示數據給你編輯。如果您不想嵌入Excel工作表,您需要將代碼保存在模塊中,以獲得powerpoint/word並通過shapes對象訪問圖表。

Sub GetChartName() 
Dim sSlide As Slide 
Dim cChart As Chart 
Dim sShape As Shape 

Set sSlide = PowerPoint.ActivePresentation.Slides(1) 
    For Each sShape In sSlide.Shapes 
     If sShape.HasChart Then 
      Set cChart = sShape.Chart 
       MsgBox cChart.Name 
      Set cChart = Nothing 
     End If 
    Next 
Set sSlide = Nothing 

End Sub 
+0

對不起,但我認爲這是完全錯誤的。數據系列不是數組 - 它可以包含公式以及宏等。請參閱我的問題的最後部分,在此解釋實現此目的的一種方法。正如我在評論中解釋的那樣,將代碼放入Word/PowerPoint並不是我正在尋找的解決方案。 –