2017-11-23 11 views
0

こんにちは私は問題があります。オブジェクト(ShapeRange)の名前VBA

私は「* .docxの」文書の複数に取り組んでいます

彼らは同様の特性を持っており、それらのそれぞれは、いくつかのオブジェクト(他のドキュメント)

問題私が持って開く必要がある特定のオブジェクトを持っています異なる文書で異なる名前:

「オブジェクト17」、「オブジェクト27」など

だから、イムないこのコードでそれを自動化することができ:

With wd 

.Activedocument.Shapes("Object 17").Select 

.Selection.ShapeRange(1).OLEFormat.DoVerb VerbIndex:=wdOLEVerbPrimary 

.Selection.WholeStory 

.Selection.Copy 

End With 

ポイントは、すべてのドキュメントでこのオブジェクトは同じ "名前"を持っていることです。 "ASF_Debtor"ですが、コードレベルからは "オブジェクト17"、 "オブジェクト28"などです

どういうわけか私の適切なオブジェクトを見つけることができますか?

+0

あなたはオブジェクト名よりも別のプロパティを使用してみましたしましたか? (型、サイズ、場所) –

+1

'Shapes(" ASF_Debtor ")'でアクセスしようとしましたか?私はちょうどこのようにテストしました:私はテキストボックスを挿入し、元の名前は '' Text Box 1 ''です。私はそれを '' Test "'という名前に変更します。今度は 'Shapes(" Text Box 1 ")と' Shapes( "Test") 'は同じオブジェクトにアクセスできます。 – newacc2240

+0

はい私はエラーがあります: "指定された名前の項目が見つかりませんでした" – maciej

答えて

0

それが機能するようになりましたように見えます:

Dim obj as shape 

For Each obj In ActiveDocument.Shapes 

ActiveDocument.Shapes.Range(i).Select 


Debug.Print Selection.ShapeRange.Name 

Debug.Print Selection.ShapeRange(1).OLEFormat.IconLabel 


If Selection.ShapeRange(1).OLEFormat.IconLabel = "ASF_DebtorID" Then 

    Selection.ShapeRange(1).OLEFormat.DoVerb VerbIndex:=wdOLEVerbPrimary 

    Selection.WholeStory 

    Selection.Copy 

end if 

i = i + 1 

next 
関連する問題