ランタイムエラー '-2147188160(80048240)データ型:= pppasteenhancedmetafileエラー

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

質問

いくつかのバグがあるようです。この問題を解決することはできません。すべてのコードが正常に実行されており、AutoshapeがExcelファイルからコピーされていることがわかりますが、PowerPointに追加されていません。エラーをポップアップします Run-time error '-2147188160(80048240) View.Pastespecial : Invalid Request. 。指定されたデータ型は利用できません

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
役に立ちましたか?

解決

あなたのコードは、何かの選択に依存しない場合、より速く、おそらくより信頼性が高くなります。

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

エラーメッセージが表示される理由については、クリップバードに何かを置いた後、コードを停止してみてください。次に、PowerPointに切り替え、貼り付けスペシャルを使用して、使用可能な貼り付けオプションを確認します。 EMFがそれらの1つでない場合、それがあなたの問題です...あなたはクリップボードにEMF形式を何も入れていません。

他のヒント

同様の問題がありましたが、別の解決策が見つかりました。それは私がやっていたことに固有のものかもしれません。

私は自分がするプログラムをセットアップします:

  1. (マニュアル)いくつかのパフォーマンスメトリックに関するレポートであったWebページ全体をコピーします
  2. (マニュアル)それを貼り付けてExcelに貼り付けました
  3. プログラムを実行して、必要な値を抽出し、貼り付けたシートの内容をクリアします。

最終的に多くのテストの後、シートにアクセスしようとしたときにこの同じ自動化エラーで失敗します。

Sheets("PDX Paste").Activate

直接名の参照の代わりにインデックス値を使用しても、特定のシートを除く他のすべてのシートをアクティブ化することができました。グーグルで成功を収めた後、ウェブサイトからのコピーと貼り付けも目に見えないコントロールを貼り付けていることがわかりました。これを見つけたとき、1(プログラムのトリガーに使用するボタン)を予想したときに1,300以上の形状がありました。実際には、これらのコントロールを保存するために非常に多くのメモリが使用されているため、グリッチが数秒間表示されたためにグリッチが表示されたときにのみ明らかでした。

次のコードを独立して実行し、データのクリーンアップを行うときにプログラムの最後に追加しました。コードはシートを通過し、私のボタンと同じタイプではない任意の形状を削除します。削除する形状が保持したい形状と同じタイプである場合、それは適応する必要があります。また、保持する形状がないと簡単になります。

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

これがこの問題を解決するかどうかはわかりませんが、これが他の人に役立ち、この比較的曖昧なエラーメッセージを引き起こしている可能性のあるものを把握する時間の喪失を防ぐことができることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top