サンプルは、.xlsx で保存しています イントラネットのWEBページで利用されるテクニックの基本的な部分です。イントラネットの場合は、フォーマットを事前に作成しておくので、Excel ブックの作成を行う事は稀ですが、簡単な運用に使う場合は新規にブックが必要になると思います ※ 複数回実行すると上書きされます 昔から、Excel.Application の扱いはけっこう厄介で、実行する毎に Quit しておくとトラブルを最低限に抑える事ができます。しかし、操作方法のルールとリカバリ方法をマニュアル化しておく事が最も重要になります( トラブル時は、非表示のままメモリに残るので、タスクマネージャからタスクの終了をする必要があります ) Jscript
// **************************** // 初期処理 // **************************** var App = new ActiveXObject( "Excel.Application" ); var WshShell = new ActiveXObject("WScript.Shell"); App.DisplayAlerts = false; //App.Visible = true; // **************************** // ブック追加 // **************************** App.Workbooks.Add(); // **************************** // 追加したブックを取得 // **************************** var Book = App.Workbooks( App.Workbooks.Count ); // **************************** // 現状、ブックにはシート一つ // という前提で処理していますが // 必要であれば、Book.Worksheets.Count // で現在のシートの数を取得できます // **************************** var Worksheet = Book.Worksheets( 1 ); Worksheet.Activate(); // **************************** // Add では 第二引数に指定した // オブジェクトのシートの直後に、 // 新しいシートを追加します。 // **************************** Book.Worksheets.Add(null,Worksheet); // **************************** // シート名設定 // **************************** Book.Sheets(1).Name = "新しい情報"; Book.Sheets(2).Name = "予備情報"; // **************************** // 参照 // 最後の 1 は、使用するフィルター // の番号です // **************************** var FilePath = App.GetSaveAsFilename(null,"Excel ファイル (*.xlsx), *.xlsx", 1); if ( FilePath == false ) { WshShell.Popup( "Excel ファイルの保存選択がキャンセルされました" ); App.Quit(); App = null; WScript.Quit(); } // **************************** // 保存 // 拡張子を .xls で保存するには // Call ExcelBook.SaveAs( BookPath, 56 ) とします // **************************** try { Book.SaveAs( FilePath ) } catch (error) { WshShell.Popup( "ERROR : " + error.description ); } // **************************** // Excel をアプリケーションとして終了 // **************************** App.Quit(); // **************************** // Excel を VBScript から開放 // **************************** App = null; // **************************** // ファイルの最後 // ****************************
VBScript
' **************************** ' Excel オブジェクト作成 ' **************************** Set App = CreateObject("Excel.Application") ' **************************** ' 警告を出さないようにする ' **************************** App.DisplayAlerts = False ' **************************** ' ブック追加 ' **************************** App.Workbooks.Add() ' **************************** ' 追加したブックを取得 ' **************************** Set Book = App.Workbooks( App.Workbooks.Count ) ' **************************** ' 現状、ブックにはシート一つ ' という前提で処理していますが ' 必要であれば、Book.Worksheets.Count ' で現在のシートの数を取得できます ' **************************** Set Worksheet = Book.Worksheets( 1 ) Worksheet.Activate() ' **************************** ' Add では 第二引数に指定した ' オブジェクトのシートの直後に、 ' 新しいシートを追加します。 ' **************************** Call Book.Worksheets.Add(,Worksheet) ' **************************** ' シート名設定 ' **************************** Book.Sheets(1).Name = "新しい情報" Book.Sheets(2).Name = "予備情報" ' **************************** ' 参照 ' 最後の 1 は、使用するフィルター ' の番号です ' **************************** FilePath = App.GetSaveAsFilename(,"Excel ファイル (*.xlsx), *.xlsx", 1) if FilePath = "False" Then MsgBox "Excel ファイルの保存選択がキャンセルされました" Wscript.Quit() End If ' **************************** ' 保存 ' 拡張子を .xls で保存するには ' Call ExcelBook.SaveAs( BookPath, 56 ) とします ' **************************** on error resume next Book.SaveAs( FilePath ) if Err.Number <> 0 then MsgBox( "ERROR : " & Err.Description ) end if on error goto 0 ' **************************** ' Excel をアプリケーションとして終了 ' **************************** App.Quit() ' **************************** ' Excel を VBScript から開放 ' **************************** Set App = Nothing ' **************************** ' オブジェクト変数を初期化 ' ( 初期化しないとオブジェクト扱いされる ) ' **************************** App = Empty MsgBox( "処理が終了しました" )
Microsoft ドキュメント Application.GetSaveAsFilename メソッド (Excel) Application.GetOpenFilename メソッド (Excel) Worksheets.Add メソッド (Excel) Workbook.SaveAs メソッド (Excel) 可能列挙型 (Excel) / SaveAs メソッド で使用する定数 関連する記事 VBScript : 既存の Excel を PDF に変換する ( Excel 2007以降 )
|