ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
JavaScript+VBScript(Class)+Excel
日時: 2009/03/27 16:55
名前: lightbox



ほとんど業務用です。
部品としての基本部分のみなので、ここに必要な処理を実装していきます。
とは言うものの、セルへのデータセットさえあればたいてい使えるので、
自分用としてはあと少しで完成です。


拡張子:
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=shift_jis" />
<TITLE>Excel処理</TITLE>
<SCRIPT type="text/javascript">

// ***********************************************
// VBScript の呼び出し
// Excel は、VBScript のほうが問題回避できる
// 引数は、ファイルのパスの入ったINPUT エレメント
// ***********************************************
function test(obj) {
	TestExcel(obj)
}

</SCRIPT>


<!-- Excel の為の VBScript セクション -->
<SCRIPT language="VBScript">

Dim ExcelApp	' Excel オブジェクトは一つで良いので使いまわし用

' ************************************************
' 開始
' ************************************************
Function TestExcel(obj)

	' ファイルのパスを表示
	MsgBox(obj.value)

	Dim Book	' 一つのブックを処理するインスタンス

	Set Book = New ExcelAction
	Call Book(ExcelApp,obj.value)

	' デフォルトが非表示なので表示
	Book.Visible( True )

	' 二つ目のシートを使用する
	Book.SelectSheetNo( 2 )

	MsgBox("OK")

	' 全てのプックを閉じてから、いずれかのインスタンスで終了する
	' ブックが一つの場合は、閉じる必要は無い( 閉じてから終了 )
	Book.Quit()

End Function

' ************************************************
' クラス定義
' ************************************************
Class ExcelAction

	Public ExcelApp		' 共有
	Public ExcelBook	' このインスタンス用

' ************************************************
' コンストラクタのようなもの( New では呼ばれない )
' ************************************************
	Public Default Function InitSetting(ExcelApp,strPath)

		If Not IsObject(ExcelApp) Then
			Set Me.ExcelApp = CreateObject("Excel.Application")
		else
			Set Me.ExcelApp = ExcelApp
		End If
		Set ExcelApp = Me.ExcelApp

		Set ExcelBook = ExcelApp.Workbooks.Open(strPath)

		' アクティブなウィンドウを最大化
		ExcelApp.ActiveWindow.WindowState = 2
		' 警告メッセージを非表示
		ExcelApp.DisplayAlerts = False

	end function
 
' ************************************************
' メソッド ( 表示・非表示の設定 )
' ************************************************
	Public Function Visible(bFlg)
	
		Me.ExcelApp.Visible = bFlg
	
	End Function

' ************************************************
' Book を閉じる
' ************************************************
	Public Function Close()
	
		If TypeName(ExcelBook) = "Workbook" Then
			' 保存した事にする
			ExcelBook.Saved = True
		End If
		ExcelBook.Close()
		Set ExcelBook = Nothing
		ExcelBook = Empty
	
	End Function

' ************************************************
' Excel 本体の終了
' ************************************************
	Public Function Quit()

		If IsObject(ExcelBook) Then
			If TypeName(ExcelBook) = "Workbook" Then
				' 保存した事にする
				ExcelBook.Saved = True
			End If
		End if
		If IsObject(ExcelApp) Then
			ExcelApp.Quit
			Set ExcelApp = Nothing
		End If
		ExcelApp = Empty

	End Function

' ************************************************
' シート名によるシート選択
' ************************************************
	Public Function SelectSheet(strSheetName)

		ExcelBook.Sheets(strSheetName).Select

	End Function

' ************************************************
' 番号よるシート選択
' ************************************************
	Public Function SelectSheetNo(No)

		ExcelBook.Sheets(No).Select

	End Function

End Class


</SCRIPT>

</HEAD>
<BODY>

<!-- Excel(.xls) を選択 -->
<INPUT id="target" type="file">
<!-- javascript で呼び出し(オブジェクト渡し) -->
<INPUT
	type="button"
	value="実行"
	onClick="test(document.getElementById('target'));"
>

</BODY>
</HTML>
メンテナンス


日時: 2009/03/27 16:55
名前: lightbox