電子書籍の厳選無料作品が豊富!

JavaScriptで書き出したオートシェイプにテキストを挿入したいのですができません。

先日、ExcelのシートにJavaScriptでオートシェイプを書き出す方法を質問した者です。
今度は書き出したオートシェイプにテキストを挿入したいのですが上手くいきません。
どうすれば良いのか教えてください。

※またもやJavaScriptで解決したいです。

なお、現在悩み中のソースは以下のようです。
※教えて頂いたソースほとんどそのままですが...

function createShapes() {

var excel = new ActiveXObject( "Excel.Application" );
excel.visible = true;
var sheet = excel.Workbooks.Add().activeSheet;

// オートシェイプ挿入:引数の105は吹き出しを示す
sheet.Shapes.AddShape(105, 123, 37.5, 151.5, 94.5);

// ココでメソッド、プロパティがないとエラーになってしまう...
 sheet.Shapes("AutoShape 1").Characters.Text = "ほげほげ";
}


よろしくお願いします。

A 回答 (1件)

こんにちは。

 回答がないみたいなので…


適当に試行錯誤で出来ただけなので、正しい方法かどうか不明です。
(今、VBAのヘルプが壊れてて何も確認できない)

sheet.Shapes("AutoShape 1").TextFrame.Characters().Text = 'hoge';

でも、通常は「AutoShape 1」という名前を当てには出来ないでしょうから、(ご提示の場合は新規なので、まずそうなるけど)
var shape1 = sheet.Shapes.AddShape(105, 123, 37.5, 151.5, 94.5);
shape1.TextFrame.Characters().Text = 'hoge';

みたいな方がよろしいのでは?

最初にも書きましたが、正しい方法かどうかわからないので、あくまでもご参考までに。

>※またもやJavaScriptで解決したいです。
      ↑MSの独自拡張部分なので「JScript」ですね。

この回答への補足

ujillin 様

var shape1 = sheet.Shapes.AddShape(105, 123, 37.5, 151.5, 94.5);
shape1.TextFrame.Characters().Text = 'hoge';

の書式できました!

ありがとうございました。

補足日時:2010/01/18 20:28
    • good
    • 0
この回答へのお礼

返答遅くなりまして申し訳ありません。
あれから自分なりにイロイロと工夫してなんとか解決方法見つけました。
※マクロ編集画面やオブジェクトブラウザなどから類推して動くようになりました。

その方法とは、

1)生成したオブジェクトを選択状態にする。
2)そのオブジェクトにテキストを設定するです。

ソースは以下のようになります。


// OLEオブジェクトの生成
var excel = new ActiveXObject( "Excel.Application" );
excel.visible = true;
var sheet = excel.Workbooks.Add().activeSheet;

// オートシェイプ挿入:引数の105は吹き出しを示す
var myShape = sheet.Shapes.AddShape(105, 123, 37.5, 151.5, 94.5);

// オートシェイプを選択状態に
myShape.Select();

// 選択中のオートシェイプにテキストを設定する
this.excel.Selection.Characters.Text = "ほげほげ";


です。

fujillin 様の方法に近い形だと思います。

var shape1 = sheet.Shapes.AddShape(105, 123, 37.5, 151.5, 94.5);
shape1.TextFrame.Characters().Text = 'hoge';

は試していませんが、試してみて動くようでしたら、こちらを使わせていただきます。
※残念ながら、現在Win環境が手元になく試せません。

ご返答いただいて、誠にありがとうございました。
JavaScriptでなく、JScriptであるということも肝に命じて精進していきます。

お礼日時:2010/01/18 01:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!