0

自動化の目的で、2007 パワーポイント ファイル内のオブジェクトにオブジェクト名を割り当てました。Office 2003 を搭載した別のマシンで自動化コードを実行したところ、そこでオブジェクト名が動的に変化しているため、自動化コードがエラーをスローすることがわかりました。

VBAを使用してそのマシンでオブジェクトの名前を再度変更しようとしましたが、デバッグ中に機能します。しかし、自動化コードを再実行するとエラーが発生します。

2 つのバージョン間の互換性の問題ですか、それとも何か他の問題ですか?

4

2 に答える 2

1

それが、異なるバージョンの Word に関する私の問題でした。一般に、PowerPoint の最新バージョンのコードは、以前のバージョンではサポートされていない可能性があります。ただし、コードが機能する場合もありますが、参照したメソッドが問題を引き起こしている可能性があります。

問題を解決するには、レイト バインディング (... As Object) を使用することをお勧めします

例によるリビジョン:

違いは、実行時にコードでオブジェクト ライブラリをバインドすることです。Tools-References は使用しません。そんな感じ:

Sub ppt()

    Dim olApp As Object

    Set olApp = CreateObject("PowerPoint.Application")

End Sub
于 2012-05-13T08:26:27.903 に答える
0

「オブジェクト名」とは、形状名のことですか? つまり、シェイプの .Name プロパティですか? これはバグがあるようです。

操作する必要がある図形にタグを使用することを検討してください。たとえば、oSh.Name = "Remember me" を使用する代わりに、oSh で形状への参照を想定すると、次のようになります。

oSh.Tags.Add "ShapeName","RememberMe"

次に、形状への参照を取得する必要がある場合は、次のような関数を使用します。

Function ShapeNamed(oSl as Object, sName as string) as Shape
  Dim oSh as Shape
  For Each oSh in oSl.Shapes
    If oSh.Tags("ShapeName") = sName Then
      Set ShapeNamed = oSh
      Exit Function
    End If
  Next
End Function

oSl は Slide ではなく Object として宣言されているため、Slides、Masters、Layouts などの関数を渡すことができます。

于 2012-05-13T22:26:07.513 に答える