• 締切済み

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>

みんなの回答

  • q-ue
  • ベストアンサー率75% (12/16)
回答No.1

使用しているIEのバージョンは何ですか? IE9以降では、ネットワーク上でActiveXObjectを利用できないようです。 http://msdn.microsoft.com/en-us/library/ie/7sw4ddf8(v=vs.94).aspx 文書を互換モードに変更すれば、利用できるかもしれません。 http://msdn.microsoft.com/ja-jp/library/cc288325.aspx それが無理なら、ローカルにHTMLを保存してもらうなど、考え方を改める必要があります。

関連するQ&A

  • <asp>タグの属性情報が取得できない

    いつも利用させていただいております。 宜しくお願いします。 今、VS2005のASP.NETを使用してプログラミングをしているのですが どうしてもタグの属性情報が取得できないため、ご存知の方が おりましたら是非アドバイスを・・・と思い投稿させていただいています。 以下にソースを記載いたします <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>test</title> <script language="javascript" type="text/javascript"> <!-- function test(){ alert(document.getElementById("Label1").getAttribute('Visible')); } // --> </script> </head> <body> <form id="form1" runat="server"> <div> <asp:DropDownList ID="DropDownList1" runat="server"> </asp:DropDownList> <asp:Label ID="Label1" runat="server" Text="Label" Visible="true"> </asp:Label> </div> </form> </body> </html> 上記ソースで「getElementById("Label1").getAttribute('Visible')」と言う部分が今回のターゲットです。 通常のHTMLタグ(div,・・・・)ですとなんら問題なくそれぞれの属性を取得できるのですが、こと<asp: タグで始まる属性を取得しようとすると・・・  ID→取得できました。  text→取得できません。  Visible→取得できません。 上記状態となってしまいます。 そこでご質問です。 ・<asp:タグの属性は[getAttribute]で取得できないのでしょうか? ・もし、取得できない場合は、何とか[Visible]をOnClickイベントで  "false"にしたいと考えています。 以上です。もしご存知の方がいましたら、なにとぞご教授の程 宜しくお願いします。 環境  WindowXP  VS2005 EnterPriseEdition  SQLServer2005

  • 「終了していない文字列型の定数です」とでます

    javascriptの以下のコードで「終了していない文字列型の定数です」と出ます。 var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.OpenTextFile("test.txt", 2, true); try { file.WriteLine("ここからレイアウト"); }finally{ file.Close(); } file.WriteLine()の文字が"ここからレイアウト"の時「終了していない文字列型の定数です」のエラーが出ます。ファイル名は「test.js」です。この文字列を出力する方法を教えて下さい。 よろしくお願いします。

  • javascriptでlabelの値取得

    vs2012(c#)で <asp:Label ID="test" runat="server" Text="abc" Visible="true"></asp:Label> の値をjavascriptで取得したいのですが、下記で実行すると l1はnullになり取得できません。 var l1 = document.getElementById("test"); var data = l1.innerText; console.log(data); そのようにすれば取得できるでしょうか

  • データベースから書き出した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で行いたいと思います。

  • jscriptからエクセルのオートシェイプを作成しようとしていますが、

    jscriptからエクセルのオートシェイプを作成しようとしていますが、文字サイズの変更ができません。 スクリプトは以下の通りです。 <job id="ConstJob"> <reference guid="00020813-0000-0000-C000-000000000046"></reference> <script language="JavaScript"> //エクセルオブジェクト var excel = new ActiveXObject("Excel.Application"); //表示しないで編集 excel.Visible = false; // エクセル新規作成 var book = excel.Workbooks.Add(); book.Worksheets("Sheet1").Activate; // オートシェイプの作成 var shape0 = book.Worksheets("Sheet1").Shapes.AddShape(1, 5, 5, 410, 130); shape0.TextFrame.Characters().Font.Size = 9; ……(1) shape0.TextFrame.Characters().Text = "ここにテキスト"; //エクセルの保存 var fso = new ActiveXObject("Scripting.FileSystemObject"); book.SaveAs(fso.GetFolder(".").path + "\\sample.xls"); //エクセルの終了 excel.Quit(); WScript.Echo("作業完了"); </script> </job> この状態でwsfファイルを起動させると、(1)の行でエラーを起こしてしまいます。 「Font クラスの Size プロパティを設定できません。」というエラーです。 検索するとシートの保護を解除すればいい、というページが見つかったのですが、 (参考→http://okwave.jp/qa/q2497357.html) マクロでは使えても、Jscriptで書いても動作してくれません。 解決策をご存知の方は、よろしくお願いします。

  • [JS] private関数からオブジェクト参照

    JavaScriptにて外部から使用する関数をpublicに、内部的に使用するだけの関数をprivateにしたく、 <http://d.hatena.ne.jp/brazil/20051028/1130468761>や<http://www.findxfine.com/programming/javascript/59.html>を参考に以下のようにしてみました。 func1はtestクラス内からしか呼び出せず、privateになっており、 func2はtestクラス外からも呼び出せて、publicになっているようです。 しかし、func2からfunc1を呼び出した際に、func2の呼び出しもとのオブジェクトを参照しようとすると undefinedになってしまいます。 var a = new test(); //a.func1(); // これはprivateなのでエラー a.func2(); // こちらはpublicなのでOK function test(){ var self = this; // private variable var data1 = 1; // public variable this.data2 = 2; // private function function func1(){ console.log(data1); // 1を表示 console.log(this.data2); // これがundefinedとなってしまう } // public function this.func2 = function(){ console.log(data1); // 1を表示 console.log(this.data2); // 2を表示 func1(); }; } どのようにすれば、オブジェクト変数を参照でき、 クラス内でのみ使用可能なprivate関数を定義できるのでしょうか。

  • html組込み時のカレントフォルダについて

    本日、初めてjavascriptにチャレンジしました。 カレントフォルダについて、わからないため教えてください。 ■D:/data/にtest.html,test.jsを作成 ■test.html内にtest.jsを組み込み ■test.jsに下記を記載 var fso = new ActiveXObject("Scripting.FileSystemObject"); var myFolder = fso.GetFolder("."); var myFiles = new Enumerator(myFolder.Files); while(!myFiles.atEnd()){ document.write(myFiles.item()); myFiles.moveNext(); } D:/data/内のファイル一覧を表示させたかったのですが、 結果は、デスクトップのファイル一覧が表示されました。 fso.GetFolder(".")でカレントフォルダを指定していますが、 この定義はどうなっているのでしょうか? 不慣れなため、質問の仕方も簡潔でなくすみません。 宜しくお願いいたします。

  • Ajaxのプログラムをオブジェクト指向で・・・

    Ajaxのプログラムを一つのオブジェクトにまとめてみようと思ってやってみたのですが、 >エラー: プロパティ 'readyState' の値を取得できません: オブジェクトは Null または未定義です。 などと表示されて上手く行きません。 何が悪くてエラーが出るのかが理解出来ていません。 詳しい方、エラーの原因・解決方法を教えてください。お願いします。 php側 echo "test"; javascript側 //-------------------------------------------------------------------- // てすとオブジェクト //-------------------------------------------------------------------- var Test = function() {// メンバ変数の定義 this.request = ""; this.query = "test";// クエリ this.response = "";// レスポンス }; Test.prototype = {// プロトタイプの定義 /* データ送信 */ tSend : function() { if(this.query) { this.request = this.ajaxRequest(); this.request.onreadystatechange = this.tLoad; if(this.query) { this.request.open("POST", "./index.php", true); this.request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); this.request.send(this.query); } } }, /* データ受信 */ tLoad : function() { if((this.request.readyState == 4) && (this.request.status == 200)) { alert("test"); } }, /* HTTP通信用 */ ajaxRequest : function() { var value = null; try { value = new XMLHttpRequest(); } catch(e) { try { value = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { value = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { return null; } } } return value; } }; //----------------------------------------------------------------------- // 実行 //----------------------------------------------------------------------- var Test = new Test();// 通信用オブジェクトの生成 Test.tSend();// データ送信

  • ActiveXObject("Msxml2.XMLHTTP")がFirefoxでうまく作動していないようです。

    ブラウザでweb上のxmlを取得して内容を表示しようとしています。 windowsXPprosp2.0でIE6.0では動作を確認しています。 スクリプトの詳しいところは実際はよく分かっていませんがコピペに手を加えて現在の形になっています。 <title>テストページ</title> function myCheck() { var r = null; if (typeof window.XMLHttpRequest == "undefined") { if (typeof window.ActiveXObject == "function") { try { r = new ActiveXObject("Msxml2.XMLHTTP"); r = window.XMLHttpRequest = myXMLrequest() { r = new ActiveXObject("Msxml2.XMLHTTP"); } } catch (e) { try { r = new ActiveXObject("Microsoft.XMLHTTP"); r = window.XMLHttpRequest = myXMLrequest() { r = new ActiveXObject("Microsoft.XMLHTTP"); } } catch (e) { } } } // else if () { } } // else { } r.onreadystatechange = function() { if ( ( r.readyState == 4 ) && ( r.status == 200 ) ) { 以下続く try catchの処理でIEとFierfoxなどのブラウザ分けをしていると思っているのですが教えてください。 Firefox2.0 Opera9ともに画面が真っ白で何も表示されません。 よろしくご教授ください。

  • javascriptでRadioButton操作

    いつもお世話になります。 開発環境:asp.net(VB) WebフォームにWebユーザーコントロールを貼り付けしています。 Webユーザーコントロールにはラジオボタンが4つあります。 ラジオボタンの選択によって、ラベルに入る文字が変わるようにしたいです。 javascriptで製造したいと思っていますが、(1)の「document.userfotm1.elements["lbl" + i].value = "test1";」で、 「Microsoft JScript 実行時エラー:' document.userfotm1.elementsは Null またはオブジェクトではありません。」と表示されてしまいます。 どなたかご教示いただけますでしょうか。 (1)javascript ※ 「userfotm1」…Webユーザーコントロール全体選択したときのプロパティ値「ID名」を入力しています。(form名を入れるのが正しいようですが、Webユーザーコントロールではどれににあてはまるのか分かりません・・・。) function ChangeLabel(obj) { var maxCnt = 4; if (obj.id == "RadioButton1") { for (i = 1; i <= maxCnt; i++) { document.userfotm1.elements["lbl" + i].value = "test1"; } } else { for (i = 1; i <= maxCnt; i++) { document.userfotm1.elements["lbl"+ i].value = "test2"; } } } (2)定義 以下を4つ定義しています <asp:TableCell CssClass="TdData"><asp:Label ID="lbl1" runat="server"  Text="TESTA"></asp:Label></asp:TableCell> <asp:TableCell CssClass="TdData"><asp:Label ID="lbl2" runat="server"  Text="TESTB"></asp:Label></asp:TableCell> <asp:TableCell CssClass="TdData"><asp:Label ID="lbl3" runat="server"  Text="TESTC"></asp:Label></asp:TableCell> <asp:TableCell CssClass="TdData"><asp:Label ID="lbl4" runat="server"  Text="TESTD"></asp:Label></asp:TableCell> (3)Webユーザーコントロール .RadioButton1.Attributes.Add("onclick", "ChangeLabel(this)") .RadioButton2.Attributes.Add("onclick", "ChangeLabel(this)") .RadioButton3.Attributes.Add("onclick", "ChangeLabel(this)") .RadioButton4.Attributes.Add("onclick", "ChangeLabel(this)") よろしくおねがいします。

専門家に質問してみよう