2016-09-22 5 views
0

나는 이미지와 버튼이있는 워크 시트가 있습니다. (인보이스) 이미지와 함께 워크 시트를 복사하고 싶지만 버튼 2 개를 사용하지 않고 새로운 통합 문서의 새 시트에 넣고 싶습니다. 그리고 vba 매크로로 작업하고 싶습니다. 순간에 나는 보통의 복사 명령으로 그것을하고 2 개의 단추를 위해 여분의 삭제 명령을 사용한다.vba excel : 이미지가 있지만 단추가없는 워크 시트를 복사하는 방법

나는 쉬운 방법이있을 것이라고 확신합니다. 나는이 시도 은 ...

Application.CopyObjectsWithCells = False 
Sheets("invoice").Select 
Sheets("invoice").Move After:=Workbooks("invoices").Sheets(1) 
Application.CopyObjectsWithCells = True 

이러한 단추를 푼다하지만 이미지도 사라졌다. 하지만 나는 이미지를 지키고 싶다.

여러분이 도와 드리겠습니다.

미리 감사드립니다.

답변

0

의 설명은 아래 코드의 주석에 있습니다

Option Explicit 

Sub CopySheet_WO_Btn() 

Dim newWB      As Workbook 
Dim ShtOrig      As Worksheet 

Dim Obj       As OLEObject 
Dim PicShape     As Shape 
Dim PicLeft      As Double 
Dim PicTop      As Double 

Set ShtOrig = ThisWorkbook.Sheets("invoice") 

' loop through all objects in "invoice" sheet 
For Each Obj In ShtOrig.OLEObjects 

    ' if OLE Object is type CommanButton make it Un-Visible (not to copy with the sheet) 
    If Obj.progID = "Forms.CommandButton.1" Then 
     Obj.Visible = False 
    End If 

Next Obj 

Set newWB = Workbooks.Add(xlWBATWorksheet) 
ShtOrig.Copy newWB.Sheets(1) 

' loop through all shapes in "invoice" sheet and copy the pictures 
For Each PicShape In ShtOrig.Shapes 
    If PicShape.Name = "Picture 1" Then 
     PicLeft = PicShape.Left 
     PicTop = PicShape.Top 
     PicShape.Copy 

     newWB.Sheets(1).Paste 
     Selection.ShapeRange.Left = PicLeft 
     Selection.ShapeRange.Top = PicTop 
    End If 
Next PicShape 

' loop again and return the CommandButtons to be Visible in "invoice" sheet 
For Each Obj In ShtOrig.OLEObjects 
    Obj.Visible = True 
Next Obj 

End Sub 
+0

당신의 도움을 주셔서 감사 많은! 이것은 나의 작은 송장을 위해 너무나 방대하다. 그러나 당신은 나에게 훌륭한 생각을 줬다. 나는 당신의 도움으로 단추를 보이지 않게 만드는 방법을 발견하고 워크 시트를 새 통합 문서로 복사 한 다음 원래 송장의 단추를 다시 볼 수있게했습니다! 고마워요. –

+0

너무 방대한 의미가 있습니까? –

관련 문제