visioでシェイプオブジェクトのIDを取りたい

このQ&Aのポイント
  • visioでシェイプオブジェクトのIDを取得したいです。ステンシルのシェイプテンプレートをマクロで張り付けているところなのですが、その張ったオブジェクトを操作したいです。
  • IDが取れず困っています。DROP関数を実行した際に新しいオブジェクトIDが振られるのですが、そのIDを取得する方法がわかりません。
  • 試したこととして、DROP関数の戻り値がシェイプオブジェクトであることから、シェイプオブジェクトにDROP関数を代入してみましたが、オブジェクト変数または With ブロック変数が設定されていませんというエラーが発生しました。また、ページオブジェクトから現在の最大のインデックスを取得する方法も試しましたが、うまくいきませんでした。
回答を見る
  • ベストアンサー

visioでシェイプオブジェクトのIDを取りたい

ステンシルのシェイプテンプレートをマクロで張り付けているところなのですが、 その張ったオブジェクトを操作したいです。 /**************/ ◆困っていること DROP関数を実行した際に、 新しくオブジェクトIDが振られるわけですが、そのIDが取れず困っています。 ◆試したこと(1) IDを取れなかったので DROP関数の戻り値がシェイプオブジェクト だったようなので、 シェイプオブジェクト = DROP関数(※略) として見たのですが オブジェクト変数または With ブロック変数が設定されていません となり、 戻り値なしでDROP関数を使って張り付けています。。 ◆試したこと(2) PAGEオブジェクトから、 現在の最大のインデックスを取れるか試してみたのですが (MSDNのページを見てそれっぽい関数は色々試してみたのですが出来ませんでした。。) どちらの方法も出来そうな気はするのですが。。 .

質問者が選んだベストアンサー

  • ベストアンサー
  • okgoo3
  • ベストアンサー率74% (20/27)
回答No.1

Drop の戻り値が Shape オブジェクトへの参照なら hoge = Drop(省略) ではなく Set hoge = Drop(省略) だと思います。

TeferiMage
質問者

お礼

ありがとうございます。 オブジェクトなんだから、そりゃset じゃないとエラーになりますよね。。 .

関連するQ&A

  • 戻り値で返したオブジェクトの寿命について

    Ruby初心者です。 【前置き】 メソッドで宣言した変数(以下arr)に値(以下[1,2,3])を代入し戻り値として返した場合、 メソッドの戻り値(以下retArr)には、[1,2,3]への参照(arr.object_id)が設定されると認識しております。 ----------------------- def method arr = [1,2,3] return arr end retArr = method() ----------------------- 【質問】 C言語の場合、関数内で宣言したローカル変数のアドレスを戻り値として返却した場合、 関数を抜けた時点で、そのアドレスの内容は保障されなくなりますが、 1.Rubyではその様な問題がなく動作するのは、何故でしょうか? 2.また、メソッド内で宣言したオブジェクト(上記[1,2,3])の寿命はいつまでなのでしょうか? 【備考】 いろいろと調べてみたのですが、オブジェクトの参照(object_id)は、ポインタに近い概念であることは記載されているのですが、その仕組みを理解できずに悩んでします。

    • ベストアンサー
    • Ruby
  • 戻り値がクラスオブジェクト

    VB初心者でわからないので教えてください。 ある関数を呼び出して戻り値を取得するのですが、その戻り値がクラスオブジェクトとなっています。いろいろ調べてみましたが、いい結果にヒットしなかったので今回質問してみました。 言語はVB6.0です Function 関数A(A as String, B as String) dim C as Class1 set C = new Class1 Class1で宣言された変数に値を入れる処理     関数A = C end Function イメージはこんな感じです。 すみませんが解決策を教えてください。。。。

  • 【オブジェクト変数または With ブロック変数が設定されていません】の対処方法

    windowsNT、Excel2000を使用しています。 マクロを作成したところエクセルを立ち上げる都度に 【オブジェクト変数または With ブロック変数が設定されていません】 というエラーが表示されるようになりました。 マイクロソフトのHPで調べたところ http://support.microsoft.com/default.aspx?scid=kb;ja;316478 と解説があったのですが、結局何をすれば良いのか分かりません。 このエラーの解消方法を教えて下さい。

  • ワードを開くと

    あるマクロの入ったエクセルファイルに書き込んで次にそれが反映されるワードファイルを開くと ビジュアルベーシック 実行時エラー91 オブジェクト変数、withまたはブロック変数が設定されていませんがでます。どうすれば良いでしょうか?

  • エクセルのテキストボックスをVBで操作できない

    こんにちわ。 VBからエクセルを開いて、帳票を出力したいのですが、 エクセルはフォーマットシートを用意して、そのシートをコピーして書き込むようにしています。 セル単位での書き込みでは問題ないのですが、図形描画のツールボックスにある、「テキストボックス」への書き込みの仕方がどうしてもわかりません。 エクセルのマクロ記録を使って、調べたのところその場合一回目はきちんと書き込んでくれますが、二回目はなぜか「オブジェクト変数 または WITHブロック変数が設定されていません」というエラーが出ます。 なにか開放しなければならないのでしょうか? 一応、実行したマクロを載せておきます。 g_sheetwk.Shapes("text1").select Selection.Characters.Text = "aaaaaa" また、rangeオブジェクトか、shapeオブジェクトにsetしようと試みても、「型が一致しません」と言われてしまいます。 解決策があればお願いいたします。

  • エクセルマクロエラー「'Cells'メソッドは失敗しました。'_Global'オブジェクト」について

    Excel 2000のマクロで教えてください。 あるセルに関数をいれるマクロを設定しております。  変数% = 8  Range(Cells(126, 20), Cells(155, 19 + 2 *  変数%)).FormulaR1C1 =  "=(RC[-18]-R[-1]C[-18])/0.04*100" このマクロを走らせると、たまに、 「'Cells'メソッドは失敗しました。'_Global'オブジェクト」 という、エラーがでます。 どういう意味なのでしょうか。 うまくいくときもあるので、よくわかりません。 すみませんが、教えてください。

  • Rangeオブジェクトに格納できない

    A1からD5までデータが入っているのですが、 そのデータの情報をRangeオブジェクトに格納する事は出来ないのでしょうか? vbaで Sub Sampsle() Dim r As Range r = ActiveSheet.UsedRange End Sub をやろうとしてるのですが、 実行時エラー_91「オブジェクト変数またはWithブロック変数が設定されていません」になります。 r に格納しちゃえば、最終列が何列目か最終行が何行目か、A1の値は何か、などしゅとくできるんじゃないかなー と思ったのですが、できないのでしょうか?

  • Excel shape イベント

    お世話になります。 Excelマクロについて質問です。 バージョンは2010です。 Excelのあるシートにshapeオブジェクトがいくつも配置されており、そのある一つのshapeをダブルクリックしたときに、ある関数を動かす、といったイベントを設定したいのですが、やり方がわかりません。 BeforeDoubleClick等はありますが、それらはすべてアクティブシートのセルに対するイベントなため、私のやりたいことが満たされません。 私のやりたいこと… shapeをダブルクリックし、ユーザーが任意で名前を変えたり削除できるようにしたい。 また、右クリックによるコンテキストメニューの項目追加という方法でも問題ないのですが、excel2010での独自メニュー追加が不可能になったという記事を見ましたので、方法に困っています。 上記2つの方法で、わかる方、または他に良い方法がわかる方、ご返信お願いいたします…(;_;)

  • Excel2010 マクロ Findで日付の検索

    質問です。 Findで日付の関数をしているのですが、ダイレクトで入力した個所は成功するのですが、数式で表示している箇所は失敗します。”実行時エラー91 オブジェクト変数またはwithブロック変数が設定されていません” ネットで調べて、色々試したのですが、上手くいかなくて困っています。ダイレクト入力・数式のどちらでもいける方法はないのでしょうか?よろしくお願いいたします。

  • オブジェクト変数またはwithブロック変数が設定されてません

    またまた おねがいします。 x に特定セルを入れてあります。 コピーし、形式を選択して貼り付けで 値だけ、行列を入れかえる・・・と考え、 下記の記述になりました。 しかし、実行してみると エラーで 「オブジェクト変数またはwithブロック変数が設定されてません。」 と、でます。 x.PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=True アドバイスをお願いします。

専門家に質問してみよう