Erreur d'exécution « -2147188160 (80048240) DataType: = ppPasteEnhancedMetafile erreur
-
26-10-2019 - |
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
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:
- (manuel) copie une page entière qui était un rapport sur plusieurs indicateurs de performance
- (manuel) Collé dans Excel
- 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.