Frage

Es scheint, dass es einen Fehler gibt. Ich kann dieses Problem nicht beheben, der gesamte Code läuft gut und ich kann sehen, dass die Autoshape aus der Excel -Datei kopiert wird, sie jedoch nicht zu PowerPoint hinzufügt. Einen Fehler aufschlagen Run-time error '-2147188160(80048240) View.Pastespecial : Invalid Request. Der angegebene Datentyp ist nicht verfügbar

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
War es hilfreich?

Lösung

Ihr Code wird schneller und möglicherweise zuverlässiger sein, wenn Sie sich nicht auf die Auswahl von etwas verlassen:

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

Wenn Sie die Fehlermeldung erhalten, stoppen Sie den Code, nachdem Sie etwas in die Clipbard gesetzt haben. Wechseln Sie dann zu PowerPoint und verwenden Sie Special Paste, um zu sehen, welche Einfügeoptionen verfügbar sind. Wenn EMF nicht eines von ihnen ist, ist das Ihr Problem ... Sie stellen nichts in das EMF -Format in die Zwischenablage.

Andere Tipps

Ich hatte ein ähnliches Problem, aber ich fand eine andere Lösung; Es kann spezifisch für das sein, was ich getan habe.

Ich richte ein Programm ein, in dem ich würde:

  1. (Handbuch) Kopieren Sie eine gesamte Webseite, die ein Bericht über mehrere Leistungsmetriken war
  2. (Handbuch) eingefügt es in Excel
  3. Führen Sie das Programm aus, um die gewünschten Werte zu extrahieren, und löschen Sie dann den Inhalt des Blattes, auf das ich sie eingefügt habe.

Nach vielen Tests würde es schließlich mit demselben Automatisierungsfehler fehlschlagen, als ich versuchte, auf das Blatt zuzugreifen:

Sheets("PDX Paste").Activate

Ich konnte jedes andere Blatt mit Ausnahme dessen aktivieren, selbst wenn ich den Indexwert anstelle der direkten Namensreferenz verwendete. Nachdem ich ohne Erfolg gegoogelt hatte, stellte ich fest, dass die Kopie und Einfügung von der Website auch unsichtbare Steuerelemente eingefügt haben. Als ich das herausfand, hatte ich mehr als 1.300 Formen, als ich nur 1 erwartete (die Taste, mit der ich das Programm auslöste). Es war eigentlich nur deutlich, wenn ein Fehler - vermutlich aufgrund so viel Speicher, diese Steuerelemente zu speichern - einige Sekunden lang angezeigt wurde.

Ich habe den folgenden Code unabhängig voneinander ausgeführt und ihn dann an das Ende meines Programms angehängt, wenn ich die Daten aufräumte. Der Code geht durch das Blatt und löscht jede Form, die nicht der gleiche Typ wie meine Taste ist. Es müsste angepasst werden, wenn die Formen, die Sie löschen möchten, den gleichen Typ sind wie die Formen, die Sie aufbewahren möchten. Es wird auch einfacher, wenn Sie keine Formen haben.

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

Ich bin mir nicht sicher, ob dies dieses Problem lösen würde, aber hoffentlich kann dies anderen helfen und den Zeitverlust verhindern, um herauszufinden, was diese relativ vage Fehlermeldung verursacht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top