Error de tiempo de ejecución '-2147188160 (80048240) DataType: = PPPESTEENHANCEDEDETMEFILE ERROR

StackOverflow https://stackoverflow.com/questions/8326134

Pregunta

Parece que hay algún error. No puedo resolver este problema, todo el código se está ejecutando bien y puedo ver que el AutoShape se copia del archivo de Excel, pero no lo está agregando a PowerPoint. Aumentando un error Run-time error '-2147188160(80048240) View.Pastespecial : Invalid Request. El tipo de datos especificado no está disponible

If Range("H" & i).Value = 1 And Range("B" & i).Value = "FRONT" Then
    objPPT.Presentations(1).Slides(9).Select
    objPPT.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile
¿Fue útil?

Solución

Su código será más rápido y posiblemente más confiable si no confía en seleccionar nada:

With objPPT.Slides(9).Shapes
    Set objShape = .PasteSpecial(ppPasteEnhancedMetafile)(1)
    With objShape
       ' set coordinates and such here
    End With
End With

En cuanto a por qué recibe el mensaje de error, intente detener el código después de poner algo en el clipBard. Luego cambie a PowerPoint, use Paste Special para ver qué opciones de pegar están disponibles. Si EMF no es uno de ellos, ese es tu problema ... no estás poniendo nada en formato EMF en el portapapeles.

Otros consejos

Tuve un problema similar, pero encontré una solución diferente; Sin embargo, puede ser específico de lo que estaba haciendo.

Configuro un programa donde lo haría:

  1. (manual) Copie una página web completa que fue un informe sobre varias métricas de rendimiento
  2. (Manual) lo pegó a Excel
  3. Ejecute el programa para extraer los valores que quiero y luego borrar el contenido de la hoja en los que los pegué.

Finalmente, después de muchas pruebas, fallaría con este mismo error de automatización cuando intenté acceder a la hoja:

Sheets("PDX Paste").Activate

Pude activar cualquier otra hoja, excepto esa en particular, incluso usando el valor de índice en lugar de la referencia de nombre directo. Después de buscar en Google a ningún éxito, descubrí que la copia y la pegada del sitio web también estaban pegando controles invisibles. Cuando descubrí esto, tenía más de 1.300 formas cuando solo esperaba 1 (el botón que uso para activar el programa). En realidad, solo era evidente cuando se muestra una falla, presumiblemente debido a que se usaba tanta memoria para almacenar estos controles, durante unos segundos.

Ejecuté el siguiente código de forma independiente y luego lo agregué al final de mi programa cuando hago la limpieza de los datos. El código pasa por la hoja y elimina cualquier forma que no sea del mismo tipo que mi botón. Tendría que adaptarse si las formas que desea eliminar son del mismo tipo que las formas que desea mantener. También se vuelve más simple si no tiene ninguna forma que mantener.

Dim wsh As Worksheet
Set wsh = ActiveSheet

Dim i As Integer

For i = wsh.Shapes.Count To 1 Step -1
    If wsh.Shapes(i).Type <> wsh.Shapes("UpdateDataButton").Type Then
        wsh.Shapes(i).Delete
    End If
Next i

No estoy seguro de que esto resuelva este problema, pero espero que esto pueda ayudar a otros y evitar el tiempo de tiempo para determinar qué puede estar causando este mensaje de error relativamente vago.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top