2015-11-05 48 views
1

我想知道如果有人能幫助我出去,我知道什麼是一個非常簡單的過程,但我完全不知道我在用VBA做。導出多個支點圖表新的Word文檔

我創建一個自動化的Excel文檔,生產出一系列數據透視圖的,雖然這部分工作得很好,我現在希望增加一個宏,那麼所有這些圖表導出到一個新的Word文檔。

我發現一些代碼網上,似乎在某些方面的工作,但它並不完全符合我要找的。 請參閱下面的代碼:

`Sub ChartToWord() 

Dim wdApp As Word.Application 

'Copy Chart 
Sheets("SHEET NAME HERE").Select 
ActiveSheet.ChartObjects("Chart 1").Activate 
ActiveChart.ChartArea.Copy 

On Error Resume Next 
'Try to establish link to open instance of Word 
Set wdApp = GetObject(, "Word.Application") 

'If this fails, open Word 
If wdApp Is Nothing Then 
Set wdApp = GetObject("", "Word.Application") 
End If 
On Error GoTo 0 

With wdApp 
'Add new document 
.Documents.Add 
'Make Word visible 
.Visible = True 
End With 
With wdApp.Selection 

'Go to end of document and insert paragraph 
.PageSetup.Orientation = wdOrientLandscape 
.PageSetup.PaperSize = wdPaperA3 
.PageSetup.MirrorMargins = wdNarrow 
.EndKey Unit:=wdStory 
.Font.Bold = wdToggle 
.Font.Size = 18 
.TypeText Text:="Title of Page to go here" 
.Font.Size = 10 
.TypeParagraph 
'Paste Chart 
.PasteSpecial , Link:=False, DataType:=14, _ 
DisplayAsIcon:=False 
End With 
With Selection 
.Width = 500 
.Height = 500 
End With 

'Release object variable 
Set wdApp = Nothing 
End Sub` 

所以一些我此腳本 遇到的問題 - 在Word文檔似乎並沒有改變方向,因爲它應該 - 我還需要將文檔的尺寸A3,並與狹窄的空間,允許最大使用空間 - 我需要在其他幾個圖表添加到這個相同的文檔,有沒有什麼辦法,我可以做到這一個代碼中,一頁分開嗎? - 當前的代碼不會更改Word文檔中圖表的大小,而是改變我的Excel文件中的大小? - 代碼當前粘貼爲圖片,而不是數據透視表。無論如何要改變這個?

我真的很抱歉,如果我問了很多在這裏,我只是沒有關於VBA任何線索,我有點在我頭上!

回答

0

你說得對,這裏還有很多的問題,它不是通常涵蓋這麼多的StackOverflow上一個職位。另外,我不旅行在手生產機器,所以我可能會不能夠解決一切,在這裏,但讓我們看看如果我們至少可以讓事情動...

  1. 當你的代碼可以解決您需要的多個應用程序,以確保VBA瞭解應該在哪裏工作。當應用程序都支持相同的對象名稱時,這是一個問題。在這種情況下,Excel和Word都使用「選擇」。

可以通過聲明對象的特定應用和實例,例如解決這個問題:

Dim wdSel as Word.Selection, xlSel as Excel.Selection 
Set wdSel = wdApp.Selection 
Set xlSel = Application.Selection 
  • 你一個Word.Application的實例是錯誤的。如果GetObject第一次不起作用,它可能不會在第二次工作。以「打開Word」:Set wdApp = new Word.Application

  • 我不確定在引用的屬性列表中使用wdApp.Selection屬於Selection對象。正確地說,它們的前幾個屬於Document.PageSetup對象。您應該對幫助/文檔中的每個屬性進行一些研究,並確保您正確地調用它們。爲了與文檔對象工作,聲明一個變量和創建當新的文檔實例化:

    昏暗wdDoc作爲Word.Document = wdApp.Documents.Add()

  • 而不是使用選擇使用文本,使用Range對象。同樣,你需要從一個Excel範圍來區分該如此:

    Dim wdRng as Word.Range 
    Set wdRng = wdSel.Range 
    wdRng.Text = "Title text here" 
    wdRng.Font.Name = "Arial" 
    'and so on 
    

    當您完成操縱範圍的一部分,並希望把新的東西,你必須將焦點移到邊緣(開始範圍的末尾)。否則,您將最終取代原始內容。把它看作像按下左右箭頭鍵摺疊用戶界面中的選擇:wdRng.Collapse wdCollapseEnd

    1. 當您從Excel粘貼圖表時,最大的問題是:是嗎?選擇?如果是的話,那麼你可以使用wdSel,重新調整大小將起作用。

    如果不是,那麼您需要確定它是否被粘貼爲Shape或InlineShape。這取決於用戶如何配置他的Word安裝。我不記得了,但我認爲PasteSpecial可能有一個參數,可以讓你設置是否內聯...