PPT 프레젠테이션의 모든 그룹화 된 다이어그램 (모양, 화살표 및 텍스트)을 PNG로 변환하는 매크로를 작성해야합니다. (일부 eLearning 소프트웨어를 사용하여 PPT를 변환 중이며 다이어그램이 손상되어 향상된 메타 파일에도 문제가 있기 때문에 PNG가 필요합니다.)
사진 (향상된 메타 파일)을 PNG로 변환하는 매크로에서 약간 수정 된 코드를 사용하고 있습니다. 내가 한 것은 msoPicture를 msoGroup으로 변경하는 것뿐입니다.
Sub ConvertAllPicsToPNG()
Dim oSl As Slide
Dim oSh As Shape
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
' modify the following depending on what you want to
' convert
Select Case oSh.Type
Case msoGroup
ConvertPicToPNG oSh
Case Else
End Select
Next
Next
End Sub
Sub ConvertPicToPNG(ByRef oSh As Shape)
Dim oNewSh As Shape
Dim oSl As Slide
Set oSl = oSh.Parent
oSh.Copy
Set oNewSh = oSl.Shapes.PasteSpecial(ppPastePNG)(1)
With oNewSh
.Left = oSh.Left
.Top = oSh.Top
Do
.ZOrder (msoSendBackward)
Loop Until .ZOrderPosition = .ZOrderPosition
End With
oSh.Delete
End Sub
줄에 "Shapes (unknown member)"오류가 표시됩니다.
Set oNewSh = oSl.Shapes.PasteSpecial(ppPastePNG)(1)
GroupItems 및 GroupShapes에 대한 연구 결과에 따르면 VBA의 개체 참조 모델에 문제가 있다고 생각하지만 이해할 수는 없습니다.
PPT 2010에서 "Shapes (unknown member) : 잘못된 요청입니다. 클립 보드가 비어 있거나 여기에 붙여 넣을 수없는 데이터가 포함되어 있습니다."라는 오류가 발생합니다.
축소하거나 선택 창을 사용할 때 "Shape 125"가 있음을 알 수 있습니다.
많은 시행 착오 끝에 (내포가 문제가 될 수 있다고 생각하고 중첩을 해제하려고 시도했지만 성공적으로 오류가 발생했습니다) 각각의 높이가 0
. 내가 그것을 긍정적 인 가치로 바꾸면 성공!
따라서 여기에 수정 사항이 있습니다. 새 함수를 호출하여 셰이프의 높이가> 0인지 확인합니다.
For Each oSh In oSl.Shapes
' modify the following depending on what you want to
' convert
Select Case oSh.Type
Case msoGroup
'Ensure each grouped shape has h/w of at least "1"
FixShape oSh
ConvertPicToPNG oSh
Case Else
기능은 다음과 같습니다.
Function FixShape(ByRef oSh As Shape)
Dim s As Shape
'## Iterate the GroupItems collection and ensure minimum height/width
' for converion to png/jpg/etc.
For Each s In oSh.GroupItems
If s.Height = 0 Then s.Height = 1
If s.Width = 0 Then s.Width = 1
'Recursive
If s.Type = msoGroup Then
Set s = FixShape(s)
End If
Next
Set FixShape = oSh
End Function
다음은 모양을 PNG로 변환하는 최종 출력입니다.
이 오류의 근본 원인
높이 / 너비가 0 인 도형을 PNG 형식으로 붙여 넣을 수없는 것 같습니다 (도형으로 붙여 넣을 수 있음). 이는 의도적 인 제한으로 보이지만 안타깝게도 오류 메시지가 모호합니다.
이 오류에 대한 해결책
이미지 형식 (PNG, JPG 등)으로 붙여 넣기 전에 도형의 최소 크기가 1x1인지 확인하세요.
문제가되는 셰이프를 삭제하여 문제를 해결할 수 있었지만, 이렇게하면 창 밖의 셰이프를 검색하거나 나중에 다시 문제를 해결할 필요가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다