• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:jscriptからエクセルのオートシェイプを作成しようとしていますが、)

JScriptからExcelのオートシェイプ作成で文字サイズ変更ができないエラーの解決方法

このQ&Aのポイント
  • JScriptからExcelのオートシェイプを作成しようとしていますが、文字サイズの変更ができません。
  • エクセルのオートシェイプ作成のスクリプト実行中に「Font クラスの Size プロパティを設定できません。」というエラーメッセージが表示されます。
  • シートの保護を解除してもJScriptでは動作しないため、解決策をご存知の方は教えてください。

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

  • ベストアンサー
  • luka3
  • ベストアンサー率74% (292/393)
回答No.1

ExcelのプロじゃないのですがCharacters()の使い方が違うんじゃないかな。 順番を変えて、 shape0.TextFrame.Characters(0,0).Text = "ここにテキスト"; shape0.TextFrame.Characters(0,7).Font.Size = 9; とやるとできましたよ。 最初のソースをそのまま試したらExcelが見えないまま残るんで焦りました。 でもいろんなことができそうでおもしろいですね。

souitirou1
質問者

お礼

luka3さん、回答ありがとうございます。 順番を変えて、Characters()に数字を入れると良いのですね。 試してみると、こちらでもうまくできました。 全くわからなかったので非常に助かりました。 Excelを開かないまま保存して終わるというのは、あまり良いものではないかもしれませんね。 ただ、自分の作業に使うには都合が良かったので、そのまま書いてしまいました。 驚かせてしまってすみません。

souitirou1
質問者

補足

あれからもう少し試行錯誤したのですが、オートシェイプ内のテキストの文字数がエラーの本当の原因だったのかもしれません。 shape0.TextFrame.Characters(0,0).Text = "ここにテキスト"; という部分ですが、実際に使うスクリプトでは300字くらい入ります。 そこを少し削るとエラーが出なくなったのです。 どうやら255文字を越えるとダメなようです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • JavaScriptで書き出したオートシェイプにテキストを挿入したいの

    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 = "ほげほげ"; } よろしくお願いします。

  • JScriptでExcelの全シートにアクセスする方法

    JScriptからWSHを使って、Excelファイル内の全ワークシートにアクセスしようと試みています。たとえば、 var excel=WScript.CreateObject("Excel.Application"); excel.Visible=false; book=excel.Application.Workbooks.Open(ファイル名); for(var sheet in book.Sheets) { WScript.Echo(sheet.Name); } と書いてみましたが、forループに入りません。 VBScriptでは上記のようなコードでOKらしいのですが、JScriptではNGなのでしょうか? また、Office製品のActiveXオブジェクト(というのかどうかよくわからないのですが)を詳しく紹介しているサイトや書籍などをご存知でしたら教えてください。 MicrosoftのサイトにはTIPS程度しか載っていないので、独習できない状況です。

  • エクセル オートシェイプ

    ご教授下さい。 エクセルでオートシェイプを使用しようとしたところ、 左下の 「オートシェイプ」をクリック、線や基本図形など すべて使用できなくなっていました。 通常は、選択すると黒線が出てますが、線が真っ白です。 このエクセルの書類は、知人を介して送られてきたものです。 シートやブックの保護などはしておりませんし、特別な保護 もしてないと言われました。 他のエクセル書類や新規にエクセルを立ち上げた場合は、ちゃ んとオートシェイプは使用できます。 解除の仕方、設定方法がございましたら教えて下さい。 何卒宜しくお願い申し上げます。

  • WSH(Jscript)でファイル一覧

    初めまして。 WSH初心者の者です。 ファイル一覧についてご質問があります。 下記のようなスクリプト(.js)を作成したいと思っています。 「D:\\test」の中身 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt これらをWSHで一覧(コレクション)として取得し、 配列のように test[0] = "1.txt"; test[1] = "2.txt"; test[2] = "3.txt"; test[3] = "4.txt"; test[4] = "5.txt"; test[5] = "6.txt"; 別々に取り出したいと思っております。 現状リファレンス等を参考に下記のような記述をしてみました。 ※ほとんどリファレンス通りです;汗 var fso = new ActiveXObject("Scripting.FileSystemObject"); var oFolder = fso.GetFolder("D:\\test"); var oMessage = ""; var oEFiles = new Enumerator(oFolder.Files); for( ; !oEFiles.atEnd(); oEFiles.moveNext()) { var oFiles_name = oEFiles.item(); oMessage += oEFiles.item().Name + "\n"; } WScript.Echo(oMessage); これで実行すると Windows Script Host 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt と表示され、できた!と思っていたのですが、 一つ一つ配列で取り出そうと、 WScript.Echo(oMessage[0]); と足すと、何も入っていない状態になってしまいます。 この場合、どの様に修正、追加すればいいのかわからず、 迷っています。 (根本から使い方を間違っている?) もしお分かりの方がいらっしゃいましたら、 ご教授お願い致します。

  • cscriptでは動くが、html埋め込みは×

    例えば、下記のコードは、Table.jsとかしてCscript Table.jsとするとちゃんと動きますが、<html><body><script language="jscript"> ここに記載</script></body></html>として、IE9で動かそうとしても動きません。htmlに埋め込んで動かすにはどうしたらいいのでしょうか? var excelApp = WScript.CreateObject("Excel.Application"); //var excelApp = new ActiveXOject("Excel.Application");  としても一緒でした。 var book = excelApp.Workbooks.Open("d:\\test\\Table.xls"); var sheet = book.WorkSheets("Sheet1"); // Excel内を読み込み var itemName = sheet.Cells(3, 2); var weaponType = sheet.Cells(3, 3); var power = sheet.Cells(3, 4); var deffence = sheet.Cells(3, 5); var price = sheet.Cells(3, 6); WScript.Echo(itemName, weaponType, power, deffence, price); book.Close(); excelApp.Quit(); excelApp = null;

  • 【.NET】WordのテキストボックスのCharactersを探しております

     こんにちは.  質問させていただきます.どうぞよろしくお願いいたします.  VB.NETからWordのテキストボックスをいじっております.  試しにExcelで動かしてみると,Shape.TextFrame.TextRange.Charactersで やりたいことができるのですが,Wordの場合,    Shape.TextFrame.TextRange. と    Shape.TextFrame.      のどちらにも Charactersが見つからないと言われ,悩んでおります. エラーメッセージは「公開メンバ 'Characters' は型 'Range' に見つかりませんでした。」 「公開メンバ 'Characters' は型 'TextFrame' に見つかりませんでした。」 です.  VB2008でWord2007をいじろうとしておりますが,もしお詳しい方が いらっしゃいましたら,アドバイスをいただけないでしょうか...  また,よく今回のようにメンバやプロパティを探すのに四苦八苦する ことがあるのですが,こんな風に調べるといいよ,みたいなのが もしもございましたら,皆様のお知恵を拝借いたしたくお願いいたします.  どうぞよろしくお願いいたします.

  • エクセルVBAオートシェイプがあったら、の書き方

    皆さんこんにちは。 エクセルVBAの初心者です。 IFを使った条件分岐が私には難しかったので SELECTCASEを用いてみようと思うのですが条件の書き方が分かりません。 やりたい事は セルA1が「文字が入っていない且つオートシェイプが入っていない場合」のみ アクション(オートシェイプ☆を貼る)を起こしたい、です。 イメージ的にこうなるかな?と思いコードを作成しましたが ケース2の「オートシェイプがあったら」という条件の書き方が分かりません。 Sub オートシェイプ貼り付け()   With ThisWorkbook.Worksheets("Sheet1")   Select Case True     Case .Range("A1").Value <> ""     Exit Sub     Case オートシェイプがあったら     Exit Sub     Case Else       オートシェイプ☆を貼る   End Select End Sub オートシェイプの有無を条件にするにはどのような書き方をすれば良いでしょうか?

  • データベースから書き出したHTMLテーブルをエクセルのシートに取り込む

    データベースから書き出したHTMLテーブルをエクセルのシートに取り込むというプログラムをJavaScriptで書いています。 エクセルのオートシェイプをJavaScriptでエクセルのシート上に書き出したいのですが、どうも上手くいきません。 どうすれば良いか教えてください。 以下のようなソースを書いてみました。 function createShape() { var excel = new ActiveXObject("Excel.Application");// OLEオブジェクトの生成 excelVisibility = _visibility; excel.Visible = this.excelVisibility;// エクセルの可視化:真偽値 excel.DisplayAlerts = false;// 確認ダイアログを表示するかどうか:常にfalseでOK var workBook = excel.Workbooks.Add(); // ブックを設定 var workSheet = workBook.Worksheets.Add(); // シートを設定 // 長方形を書いてみる:ここでエラーになっていた workSheet.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeRectangle, 301.0, 142.0, 163.0, 82.0 ); } ※今回、VBScriptでの対応は考えておりません。全て、JavaScriptで行いたいと思います。

  • ActiveXobjectが作成できない

    こんにちは。 初めて投稿します。 現在、JavaScriptでエクセルファイルを作成するWEBプログラムを開発中です。 全くの初心者なので、ネットでどなたかが紹介していたコードを参考にできるかどうか実験中です。 自分のPCでは動くのですが、サーバーに上げると var fso = new ActiveXObject('Scripting.FileSystemObject'); のところで 「オートメーション サーバーはオブジェクトを作成できません。」 というエラーが発生します。 セキュリティの問題かと思い設定を変更したりしましたが、変化なしです。 サーバーにはMicroSoft Officeは入っていません。 でも、JavaScriptならクライアント側の環境を利用できるかなと思ったのですが… 根本的にこの考え方が間違っているんですかね? もし、何か方法があれば教えていただければうれしいです。 <script type="text/javascript"> //エクセルの起動 function withExcel(visible, func) { var excel = new ActiveXObject("Excel.Application"); excel.Visible = visible; excel.DisplayAlerts = false; try { func(excel); } finally { excel.Quit(); } } function withNewWorkbook(filename, visible, func) { withExcel(visible, function (excel) { var workbook = excel.Workbooks.Add(); try { try { func(workbook); } finally { workbook.SaveAs(filename); } } finally { workbook.Close(); } }); } function test() { var fso = new ActiveXObject('Scripting.FileSystemObject'); withNewWorkbook(fso.getAbsolutePathName("エクセルテスト.xls"), false, function (workbook) { var worksheet = workbook.Worksheets(1); worksheet.Cells(1, 1).value = "テストです!!"; } ); </script> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="エクセルのテストです!"></asp:Label> <input type="button" value="ボタン1" onclick="test()"/><br/> </div> </form> </body>

  • excel VBA オートシェイプのテキスト段落

    おはようございます。 【オートシェイプ内のテキスト行間を指定するプロパティ】 オートシェイプ内のテキスト行間を指定するプロパティはありますでしょうか? excel 2007で オートシェイプにテキストをいれた場合、 右クリックすると「段落」という項目がでてきて、 オートシェイプ内のテキストの行間を指定できたのですが、 オートシェイプ内のテキストの行間をVBAで指定することはできるのでしょか? (マクロを登録してもなにも記述されていないので、困っています。) 最終的にはアクティブブックの全シートのオートシェイプの行間を変更する VBAにしたいと思っています。 参考URL等あれば教えていただけませんでしょうか? よろしくお願いいたします。

このQ&Aのポイント
  • アパートで使用できるギターアンプやエフェクターをご紹介します。
  • ヘッドホンで聞けるギターアンプやエフェクターと、外部音源をインプットして一緒に聞くことができるモデルを紹介します。
  • USBを介してPCに記録することができるギターアンプやエフェクターの機種を教えてください。
回答を見る

専門家に質問してみよう