오류 : PowerPoint에서 도형을 PNG 형식으로 붙여 넣을 때 "지정된 데이터 형식을 사용할 수 없습니다."

조프

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관