固有のタグ プロパティによって 1 つのスライドから形状を取得し、それを別のスライドに貼り付けるマクロがあります。
OS のさまざまなバージョン (Win 7、8、8.1) および PowerPoint のバージョン (2007、2010、2013、32 & 64 ビット) で期待どおりに動作します。
しかし、クリップボードが空であるために貼り付けコマンドが失敗するユーザーが1人だけいました。
これは、簡単にするために、形状を返すコード スニペット (ShapeByTag は含めていません) 関数です。
Dim oShp as ShapeRange
ShapeByTag(TagName, TagValue).Copy
Set oShp = oSld.Shapes.Paste
2 行目に「-2147188160 Shapes (unknown member) : Invalid request. Clipboard is empty or contains data that may not be pasted here.」というエラーが発生した場合。VBE に入り、コマンドを正常に再実行できます。これは、タイミングの問題があることを示しています。
しかし、ユーザーのマシンは、8GBRAM を搭載した真新しい i5 Windows 8.1 Pro (64 ビット) ラップトップであり、問題が発生しない他の多くのユーザー マシンよりも強力です。彼は PowerPoint 2013 32 ビットを使用しています。
これを行うことで問題を克服できます:
Dim oShp as ShapeRange
ShapeByTag(TagName, TagValue).Copy
On Error Resume Next
RetryPaste:
Set oShp = oSld.Shapes.Paste
If Err <> 0 Then Err.Clear: GoTo RetryPaste
On Error Goto 0
しかし、そもそもなぜエラーが発生するのでしょうか? .Copy メソッドは非常に瞬時に実行され、基になる OS がコピー操作を完了するまで次の行は実行されないと予想していました。また、タイマーを追加して、遅延が実際に挿入されている時間を確認します。