- 01: 名前:かわい投稿日:2003/05/20(火) 18:10
- VisioファイルをVBで加工するプログラムを試作しております。
Visioファイルのあるページの図形を中心としたグループ(Shape)全てにカスタ
ムプロパティを次のように付加しました。(値はグループによって変えてます)
ラベル:row
種類:数値
値:3
ラベル:col
種類:数値
値:2
この値をVBから取得したいのですが、できません。
この掲示板の以前の書き込みを参考にして、
----------------------------------------------------------------------
Dim objCell As Visio.Cell
For x = 1 To newShps.Count
Set objCell = newShps.Item(x).Cells("Prop.row.Value") ...(i)
Next x
----------------------------------------------------------------------
※newShps変数にアクティブページのShape群が正しく格納されていることは確
認済みです。
としました。
上記を「開始」すると(i)でEOFエラーが出て継続不能となります。
(i)の代わりに次のコードも試してみましたが同じくEOFエラーになります。
int_test = newShps.Item(x).Cells("Prop.row.Value").Formula
int_test = newShps.Item(x).Cells("Prop.row.Value")
※int_testはint型の変数です。
EOFエラーということはカスタムプロパティを認識できていないのではないかと
想像しています。
環境は、
OS WindowsXP
VB バージョン6.0
Visio 2000 SR1
です。
上記に関連する情報をお持ちの方はぜひご教授下さい。
よろしくお願いします。
- 02: 名前:なか投稿日:2003/05/21(水) 08:51
- Dim objShp As Visio.Shape
For x = 1 To newShps.Count
Set objShp = newShps.Item(x)
Set objCell = objShp.Cells("Prop.row.Value")
Next x
これを試して見て下さい。
- 03: 名前:かわい投稿日:2003/05/21(水) 09:45
- なかさん、早速のご教授ありがとうございます。
しかし同様に
Set objCell = objShp.Cells("Prop.row.Value")
でEOFエラーが出ます。
通常上記の方法でやっておられるのであれば、
カスタムプロパティの設定方法に誤りがある可能性があります。
カスタムプロパティは手動でVisioファイル上で行いました。
図形が中心となっているグループを選択状態にし、
右クリックして出てくるメニューから
図形/カスタムプロパティを選びました。
この方法に間違いはないと思うのですが。
- 04: 名前:なか投稿日:2003/05/21(水) 12:58
- Set objCell = objShp.Cells("Prop.row")
を試して見て下さい。
- 05: 名前:かわい投稿日:2003/05/21(水) 13:54
- なかさん、ありがとうございます。
Set objCell = objShp.Cells("Prop.row")
でも同じくEOFエラーになります。
おそらく、Visioのバージョンの違いなどによる仕様の限界ではないかと
思います。
カスタムプロパティの利用は理想的なのであきらめはしませんが、
現在確実に取得できているNameプロパティとINDEXメソッド
(部分文字取得)を利用する等の方法を検討してみます。
ありがとうございました。
- 06: 名前:なか投稿日:2003/05/21(水) 14:55
- ラベル:rowの名前には何を設定しましたか?
何も設定していない場合は
Set objCell = objShp.Cells("Prop.Row_1")
を試して見て下さい。
ShapeSheetのカスタムプロパティセクションの一番左端の列の名称
がCellsの引数として使用されているか確認して下さい。
- 07: 名前:かわい投稿日:2003/05/22(木) 14:18
- なかさん、ありがとうございます。
Set objCell = objShp.Cells("Prop.Row_1")
でエラーは出なくなりました。
Debug.Printでも正しい値が表示されていますので、
問題ないと思います。
ありがとうございました。
ラベル以外に名前があるとは想像できませんでした。
「ShapeSheetのカスタムプロパティセクションの一番左端の列」を
確認するには具体的にどのようにすればいいのでしょうか?
- 08: 名前:なか投稿日:2003/05/22(木) 15:54
- ShapeSheetを表示したい図形を選択して、
メニューの[ウインドウ]‐[シェイプシートを表示]を選択すればShapeSheetが表示します。
ShapeSheet上で右クリックして[セクションの表示]を選択してダイアログが表示したら
[全て]押し[OK]を押します。(これはやらなくても良いかも)
補足
Cellsと言うプロパティで設定する引数ですが
ShapeSheetのセルの名称のことです。
- 09: 名前:かわい投稿日:2003/05/23(金) 09:56
- なかさん、ありがとうございます。
理解できました。
以前、シェイプシートを眺めながら、この情報をVBに取り込めたら可能性が広がるのになぁと感じていました。
なぜかできないものと決めつけていたのですが、できる(一部既にやっていた)ことがわかりましたので、シェイプシート(カスタムプロパティ)への操作を含めて、いろいろ工夫してみます。
■トップに戻る リロード 単独スレ表示
|