Picture クラスの _NewEnum プロパティを取得できません。の原因

VBA 実行時に「実行時エラー '1004' Pictures クラスの _NewEnum プロパティを取得できません」というエラーが発生しました。通常は発生しないのですが特定条件で発生することが分かったので、原因と対策を紹介します。

事象

こちらの記事で紹介した、リンクされた図があるときは警告を出す処理で、特定のブックを開いていると件のエラーが出る状態でした。For Each で シートの Pictures を繰り返し処理しようとするときに、 _NewEnum を参照しようとしてエラーになります。

_NewEnum に限らず、 NameIndex など、Picture のほぼすべてのプロパティを読めない状態です。

原因

原因はオプションの「オブジェクトの表示」が「なし(オブジェクトを表示しない)」になっていると発生します。通常はすべてになっているので発生しません。

詳細設定のこんな深いところにある設定を誰が変えるんだと思いましたが、 Ctrl + 6 がショートカットキーとなっています。罫線を引くショートカット Ctrl + Shift + 6 と間違えて押してしまうケースがあるようです。

私は罫線を引くときは Ctrl + 1 派なのですが、ブックごとに保存される設定なのでうっかり他の人が設定してしまい、そのブックを開いた時だけ発生するという問題でした。

対策

Workbook オブジェクトには DisplayDrawingObjects というプロパティがあるので、それを参照しオブジェクトを表示しない(xlHide = 3)の時はスキップすれば回避できます。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください