• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HTA 内へ埋め込んだスプレッドシートの操作)

HTA内でのスプレッドシート操作方法

このQ&Aのポイント
  • HTA内でExcelファイル(*xls)を読み込んで表示、編集後に保存する方法について教えてください。
  • 以下のサイトを参考に、Excel Sheetを埋め込んだHTML Applicationを開発しています。Googleで検索しても適切な例が見つかりませんでした。
  • Excel VBAに詳しい方のご教示をお願いします。

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

  • ベストアンサー
  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

もう一つ書くのを忘れました。 VBSからCOMでエクセルを起動し、Spreadsheetへのデーターコピーですが、単にシート単位でコピーして、ペーストです。コピーバッファーを使うという事ですね。 エクセルを起動して行うシートごとのコピーと同じです。マクロの録画でやっていみましょう。 それ以外は、前回も書きましたが http://cx20.main.jp/pukiwiki/index.php?Software%2FExcel#s626e318 http://support.microsoft.com/?kbid=257819 などにあるADOを使う方法ですね。エクセルをDBとして使う方法ですね。 あとは、セル単位でコピーですね。

kahata
質問者

お礼

答えにくい質問にご丁寧に回答頂き誠にありがとうございます。 実はこの質問、自己解決して質問を削除しようかと考えていた矢先で本当に申し訳ないです。 お詫びを兼ねて当方の解決法を報告させて頂きます。 Excelを起動してValueをSpreadsheet1にコピーする方法はセル属性のコピーが困難です。(下例) -------------------------------------------------------------- <Script Language="JScript"> function ExcelOpen(){ var xlLastCell = 11; var excel = new ActiveXObject("Excel.Application"); var workbook = excel.Workbooks.Open("*.xlsへのパス"); var worksheet = workbook.Worksheets(1); with(worksheet){ var rowsCount = Range(Cells(1,1), Cells(1,1).SpecialCells(xlLastCell)).Rows.Count; var columnsCount = Range(Cells(1,1), Cells(1,1).SpecialCells(xlLastCell)).Columns.Count; } for (i=1 ;i<rowsCount+1 ;i++) { for (j=1 ;j<columnsCount+1 ;j++) { Spreadsheet1.Cells(i,j).Value = worksheet.Cells(i, j).Value; //OK } } } </Script> -------------------------------------------------------------- MS Office Web ComponentsのSpreadsheet ObjectにCSVData,CSVURL,HTMLData,HTMLURL,XMLData,XMLURLというPropertyがありこの値の取得と設定が可能なことが判りました。 参照: http://msdn.microsoft.com/en-us/library/aa205671(office.11).aspx すなわち、Excelデータ(*.xls)をcvs,html,xml形式で保存すれば、このPropertyを使ってHTAまたはWeb上のSpreadsheet Objectに読み出し/保存が可能です。(当然プログラマのリスクで・・・) 保存する他の方法はExport Methodを使って Spreadsheet1.Export(); とすれば、ユーザのtemporaryFileがExcelで開きますので、「名前を付けて保存」で任意のFolderに*.xls形式でも保存できます。 ご指摘のようにHTAでは直接Excelを起動したほうはるかによいですが、この技術はWebでも利用できるので便利か思います。(ブラウザはIEに限定されますが・・・・) ありがとうございました。

その他の回答 (1)

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.1

やっぱりと言おうか、ん~~~~ と悩んでしまう質問ですね。まあ、スレはなかなか怖くてつかないでしょう。釣りかも? >既存のexcelファイル(*xls)を読み込み表示、編集後に保存する方法がわかりません。 これをするなら、エクセルを起動して普通に使ったほうが、便利ですね。その意義がわかりません。 たぶん質問者は実務でプログラムを作成した事がないか、学生さんでしょう。 Spreadsheetの使い道ですが、実際の所ほとんどありません。と言うのも10年位前から、Spreadsheetの機能は、Tableタグで実現しているため、あえてこれを使う理由となると、エクセル風のVBA風関数が使える点にしかありません。HTML上で表を自在に操作する時に使うぐらいで、もしエクセルとして保存するなら、最初からエクセルのCOMを使えばすみますし、エクセルそのものを使うほうが便利です。 DHTMLやADOなど、下記のURLを参考にするといいでしょう。 http://msdn.microsoft.com/en-us/library/ms531388(VS.85).aspx http://msdn.microsoft.com/ja-jp/library/cc364272.aspx エクセルのCOMはエクセルのヘルプ(VBAのヘルプインストール)に出てきますので、それを見てください。VBA、VBSから使用可能です。もちろん他のCOM, DCOMインターフェース対応のスクリプト言語であれば、使用可能です。 http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/jan08/hey0118.mspx 単にインスタンスを作成して、オープンするだけです。VBAの分からない場合は、エクセルの機能で、マクロを記録(録画)する機能がありますね。あれで、やりたい事を録画して、マクロの編集で、中身をみれば、そこにスクリプトが完成しています。それを、VBSの中から使えばいいだけす。 他の参考サイト http://msdn.microsoft.com/ja-jp/library/cc410215.aspx http://msdn.microsoft.com/ja-jp/library/cc364451.aspx 簡単に言えば、COM又はDCOMについて勉強して、エクセルのヘルプを見れば、お使いの言語から、どのようにインスタンスを作成し、どのように振舞うのか記載されているので、それをみれば分かります。

関連するQ&A