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

このQ&Aのポイント
  • JavaScriptでデータベースから書き出したHTMLテーブルをエクセルのシートに取り込む方法を教えてください。
  • JavaScriptを使用してデータベースから書き出したHTMLテーブルをエクセルのシートに取り込みたいです。どうすれば実現できますか?
  • エクセルのシートにデータベースから書き出したHTMLテーブルを取り込むためのJavaScriptプログラムを教えてください。
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>今回、VBScriptでの対応は考えておりません。全て、JavaScript >で行いたいと思います ActiveXを使用する時点で、javascriptではなくなっているのでは? とりあえず、矩形を描くだけなら…(XP、IE6、Excel2003で確認) function createShape() { var excel = new ActiveXObject("Excel.Application"); excel.visible = true; var sht = excel.Workbooks.Add().activeSheet; sht.Shapes.AddShape(1, 100, 100, 200, 150); } とか?

Hoge_Moge
質問者

お礼

ありがとうございました。 私の方(Windows XP, Excel2000)にて、見事動きました!! 引数に問題があったのですね。 Microsoft.Office.Core.MsoAutoShapeType.msoShapeRectangle ではなく、数字の1が正解ですね。 ※VBエディタのスクリプトブラウザで、『Const msoShapeRectangle = 1』の文字列を発見しました。 初めて、質問したのですが、良い人に巡り会えました。 もう、最高です! > ActiveXを使用する時点で、javascriptではなくなっているのでは? 勉強不足でした。精進します!! また、よろしくおねがいします。

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

  • 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>

  • 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で書いても動作してくれません。 解決策をご存知の方は、よろしくお願いします。

  • Excelで指定のセル上に図を配置したい

    Excel VBAで、シート上に図(四角形)を配置しようと思ってます。 イメージ的には、ALTキーを押しながらセルとぴったりフィットする図形(四角形)を作成したいのですが、マクロで生成したコードを見ると下記のように座標での指定になってます。 ActiveSheet.Shapes.AddShape(msoShapeRectangle, 102#, 210#, 76.5, 15#).Select もしこれをセルで指定する方法がありましたら教えて下さい。宜しくお願いします。

  • 保存してもワークブック&シートが消えています(Excel)

    プログラミング初心者です。今DelphiでExcelを操作するプログラムを作成しており、Serversコンポーネントを使わずにOLEオブジェクトを使って操作しています。DelPhi側でExcelを起動させて、既存のファイルにDelPhiで取り出したSQLのデータをExcelに表示させるというものですが、データを上書き保存してもExcelのブックが消えていているようで、保存したxlsを起動させてもブック及びシートが表示されません。但し印刷プレビューには保存していたデータがプレビューされます。 原因が分からないので、申し訳ありませんがよろしくお願いします。 書いたプログラム↓ (uses節にComObj,Excel2000があります。) Var Excel,WorkBook,WorkSheet: Variant; ... ... Excel := CreateOleObject('Excel Application'); WorkBook := Excel.WorkBooks.Open(FileName := 'C:\@@@.xls',ReadOnly := False); WorkSheet := WorkBook.Wordsheets[1]; WorkSheet.Name := '@@@'; ... ...(以下Record取得の表記など) Excel.Visible := True; (Recordを取得し、値をCellにセットしてからVisibleをTrueにしています。) ... 大変読みにくくて申し訳ありませんがよろしくお願いします。環境はDelphi7,Excel2000,SQLServer2000です。

  • Excel VBAでのシートの削除について

    Excel VBAで、シート上に配置されたボタンをクリックすることで、メッセージを出さずにそのシートの削除をしたいと思っています。 サンプルとして、シート上(例えばSheet1)にボタンを1個配置し、 ------------------------------------------------------- Private Sub CommandButton1_Click() Application.DisplayAlerts = False Delete Application.DisplayAlerts = True End Sub ------------------------------------------------------- のようにすると、オートメーションエラーが起きます。 そこで、 Application.DisplayAlerts = True をコメントアウトしてやれば実行はできるのですが、その後別のシートで処理を行う場合には、再度メッセージを表示してほしいと思っています。 ためしに、Sheet1削除後にアクティブになるSheet2に次のようなコードを記述しました。Sheet1同様、シート上にボタンを1個配置しています。 ------------------------------------------------------- Private Sub CommandButton1_Click() MsgBox Application.DisplayAlerts End Sub Private Sub Worksheet_Activate() MsgBox "次に出るメッセージはアクティブ直後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts Application.DisplayAlerts = True MsgBox "次に出るメッセージは変更後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts End Sub ------------------------------------------------------- こうすれば、Sheet1削除後、アクティブになった直後はDisplayAlertsがFalse。その後設定変更してTrueになるかとおもったのですが、結果はFalseでした。しかしその後、ボタンをクリックするとTrueが返ってきました。 いろいろ調べましたが、なぜこのような結果になるのかわかりません。よろしくお願いいたします。

  • Excelマクロについての質問です。

    Excelのマクロについての質問です。 マクロについての質問です。 以下のようなマクロを作成しました。 このマクロを動作させているのはこのマクロを作成したファイル上です。 Sub Macro9() Dim WBA As Workbook Dim WBB As Workbook Dim WSA As Worksheet Dim WSB As Worksheet Set WBA = Workbooks("A") Set WBB = Workbooks("B") Set WSB = WBB.Worksheets("1") For i = 100 To 3000 Step 20 Worksheets.Add Before:=Worksheets("Sheet1") Dim k As String k = i ActiveSheet.Name = (k / 100) Set WSA = WBA.Worksheets(k / 100) WSB.Range("A1:AY30").Copy Destination:=WSA.Range("A1") WSA.Range("D4:I30").Clear WSA.Range("Q4:V30").Clear WSA.Range("AD4:AI30").Clear WSA.Range("AQ4:AV30").Clear Next i Application.DisplayAlerts = False Sheets("Sheet1").Delete Application.DisplayAlerts = True Application.DisplayAlerts = False Sheets("Sheet2").Delete Application.DisplayAlerts = True Application.DisplayAlerts = False Sheets("Sheet3").Delete Application.DisplayAlerts = True End Sub そこで質問ですが、このマクロを作動させると何のエラーの表示もなく最後まで動作は完了します。 ですが、シートの作成は30まで作成できてもその後のセルのコピー&ペーストはなぜかシート6.8までしかできていません(7~30までのシートはシート作成はできているのですがコピペのみが実行されず空白のままになっています。) シートもコピペも両方ともシート30まで完了するにはどの点を改善すればいいのでしょうか? 知恵が足りずどうしても直す事が出来ません。 長文申し訳ございませんが是非皆さまのお知恵をお貸しください。 宜しくお願い致します。

  • Excel.Applicationへのシートコピー

    Public xlApp As Excel.Application Public xlBook As Excel.Workbook Set xlApp = CreateObject("Excel.Application") '非表示・画面更新無・アラート非表示 xlApp.Visible = False xlApp.ScreenUpdating = False xlApp.DisplayAlerts = False Set xlBook = xlApp.Workbooks.Add xlBook.SaveAs "test123.xls" '※ここでエラー Workbooks("TEST.xls").Sheets("TEST_1").Copy After:=xlApp.Workbooks(xlBook).Sheets(3) Set xlApp = Nothing Set xlBook = Nothing 環境:WindowXP SP2,Excel2003 SP3 以上のようにオブジェクト変数のEXCELに対してのシートコピーを行いたいのですが、コンパイルを行うとエラーがなく、実行すると「コンパイルエラー 修正候補:区切り記号 または(」とエラーが発生します。色々書き方を試してみたのですが、どれもうまくいきませんでした。 宜しくお願いします。

  • エクセル。マクロの記録で出来たVBAを書き直したい。

    エクセル2000(OSはWindows2000)でマクロの記録を行いました。 四角形を出してA1セルにリンクさせフォント等の設定をしたものです。 Sub Macro5() ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200#, 100#, 140#, 80#). _ Select ExecuteExcel4Macro "FORMULA(""=R1C1"")" With Selection.Font .Name = "Century Gothic" .FontStyle = "太字" .Size = 72 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoFalse End Sub これを、実際には四角形をセレクトしないで実行させたいのです。 With ActiveSheet.Shapes.AddShape~ End With といった形になるのでしょうが、どうもうまく出来ません。 ご教示いただければ幸いです。

  • excelを上書き時の警告をなくすには

    <script language="JavaScript"> var xlApp = new ActiveXObject("Excel.Application"); var ExcelSheet; ExcelSheet = xlApp.Workbooks.Open("C:xxx"); ExcelSheet.ActiveSheet.Cells(parseInt(document.getElementById('tate').value),parseInt(document.getElementById('yoko').value)).Interior.ColorIndex = 3; ExcelSheet.SaveAs("C:Excel.xls"); //C:Excelは既に存在しています ExcelSheet.Application.Quit(); ExcelSheet = ""; </script> 色を付け編集したExcelを上書き保存する場合なのですが 確認のダイアログを出さずに保存を完了させる方法はございませんでしょうか? ExcelSheet.Application.DisplayAlerts = False こちらで試してみたところ保存されておりませんでした もしお時間がございましたらご回答いただきたく思います

専門家に質問してみよう