Question

semble qu'il y ait un bug. Ne peut pas résoudre ce problème, tout le code fonctionne très bien et je suis en mesure de voir la forme automatique est copié à partir obtenir fichier Excel, mais il n'ajoute à PowerPoint. Surgissant une Run-time error '-2147188160(80048240) View.Pastespecial : Invalid Request d'erreur. Le type de données spécifié est indisponible

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
Était-ce utile?

La solution

Votre code sera plus rapide et peut-être plus fiable si vous ne comptez pas sur rien sélectionner:

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

Quant à savoir pourquoi vous obtenez le message d'erreur, essayez d'arrêter le code après que vous avez mis quelque chose sur le clipbard. Puis passer à PowerPoint, utilisez Collage spécial pour voir ce que coller options sont disponibles. Si EMF n'est pas un d'entre eux, qui est votre problème ... vous n'êtes pas mettre quoi que ce soit au format EMF le presse-papiers.

Autres conseils

J'ai eu un problème similaire, mais j'ai trouvé une autre solution; il peut être spécifique à ce que je faisais bien.

I installait un programme où je:

  1. (manuel) copie une page entière qui était un rapport sur plusieurs indicateurs de performance
  2. (manuel) Collé dans Excel
  3. Lancez le programme pour extraire les valeurs que je veux et ensuite des contenus clairs de la feuille que je les collais sur.

Finalement, après de nombreux tests, il échouerait avec cette même erreur d'automatisation lorsque j'ai essayé d'accéder à la feuille:

Sheets("PDX Paste").Activate

Je suis en mesure d'activer toutes les autres feuilles, sauf que l'un particulier, même en utilisant la valeur d'index au lieu de la référence du nom direct. Après googler pas de succès, j'ai découvert que la copie et coller à partir du site Web a été également coller des contrôles invisibles. Lorsque j'ai trouvé ce que j'avais quand je forme plus de 1300 seulement attendu 1 (le bouton que j'utilise pour déclencher le programme). Il était en fait qu'apparente quand un pépin - probablement en raison de grande quantité de mémoire utilisée pour stocker ces contrôles -. Affiché pendant quelques secondes

Je l'ai couru le code suivant indépendamment, puis ajouté à la fin de mon programme quand je fais le nettoyage des données. Le code passe par la feuille et supprime toute forme qui n'est pas le même type que mon bouton. Il devrait être adapté si les formes que vous souhaitez supprimer sont du même type que les formes que vous souhaitez conserver. Il devient également plus simple si vous n'avez pas des formes pour garder.

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

Je ne suis pas sûr que cela résoudrait ce problème, mais nous espérons que cela peut aider les autres et éviter la perte de temps à trouver ce qui peut être à l'origine de ce message d'erreur relativement vague.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top