2017-02-21 204 views
3

我有一個Excel工作表,有四個形狀和幾個按鈕來運行宏。形狀被命名爲topCircle,leftCircle,rightCircle & midCircle。VBA Excel複製多個形狀到剪貼板

需要其中一個按鈕來運行將四個形狀複製到剪貼板的宏,以粘貼到其他Office文檔中。

雖然已經通過各種MSDN文章(如https://msdn.microsoft.com/en-us/library/office/ff940375.aspx)但有麻煩。試圖模仿上鍊接的文章的例子,我寫了這個:

Set myDocument = Worksheets("Overall") 

myDocument.Shapes.Range(Array("leftCircle", "rightCircle", "topCircle", "midCircle")).Copy 

但得到一個錯誤「對象不支持此屬性或方法」。也嘗試了一些其他的東西沒有運氣。任何想法如何得到這個工作?乾杯!

+0

雖然我不喜歡用'Select',如果你改變成'myDocument.Shapes.range(陣列( 「leftCircle」, 「rightCircle」, 「topCircle」, 「midCircle」))。Select'並添加後'Selection.Copy'它會工作。讓我來「玩」多一點,以避免這種「醜陋」的變通 –

回答

2

看來,以多種形狀從Excel工作表複製你有3種選擇:

選項1:使用Select首先選擇所有Shapes,然後複製Selection

myDocument.Shapes.Range(Array("leftCircle", "rightCircle", "topCircle", "midCircle")).Select 
Selection.Copy 

選項2:使用Group分組所有形狀,然後將它們複製在一起,然後使用Ungroup將它們分開:

With myDocument.Shapes.Range(Array("leftCircle", "rightCircle", "topCircle", "midCircle")) 
    .Group.Copy 
    ' paste to wherever you want 

    .Ungroup 
End With 

選項3:在myDocument工作表使用For Each MyShape In myDocument.Shapes遍歷所有Shapes,如果它符合項目你想它的Shape.Name之一,複製:

Dim MyShape  As Shape 

For Each MyShape In myDocument.Shapes 
    Select Case MyShape.Name 
     Case "leftCircle", "rightCircle", "topCircle", "midCircle" 
      MyShape.Copy 
      ' paste to wherever you want 

    End Select 
Next MyShape 
+0

井組解決方案工作perfectly.Thanks! – TheKeepa