ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
【IE + VBScript】信頼するイントラネットとしての Excel の処理 ( No.0 )
日時: 2009/02/21 18:46
名前: lightbox



IE 上で動かすスクリプトは、通常 JavaScript ですが、Microsoft の資源を有効に活用するには、
VBScript で動かすほうがいろいろ都合が良い場合が多いです。

インターネット上で ActiveX のスクリプト処理を許してしまうと危険ですが、
業務アプリケーションとして社内サーバを使うのであれば、その限りではありません。
上記の設定は開発中の設定で、http://localhost から提供されたページ上で
ActiveX の実行を無条件に許してしまう設定です。

このような環境ですと、IE は通常のアプリケーションと変わらなくなり、
あらゆるローカルの資源にアクセスが可能になります。
Excel 処理のサンプル
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=shift_jis" />
<TITLE>Excel へアクセス</TITLE>
<STYLE type="text/css">
* {
	font-size: 12px;
}

INPUT {
	font-weight: bold;
}

.command {
	width: 400px;

}
</STYLE>

<SCRIPT language="VBScript">

Dim ExcelApp

' ブックを開くのは一つだけ
Dim ExcelBook

' **********************************************************
' ブックを開く
' **********************************************************
Function OpenExcelBook()

	if Trim( document.all( "target" ).value ) = "" then
		alert( "Excel を選択して下さい   " )
		Exit Function
	end if

	If Not IsObject(ExcelApp) Then
		Set ExcelApp = CreateObject("Excel.Application")
		alert( "Excel.Applicationをロードしました   " )
	End If

	If IsObject(ExcelBook) Then
		alert( "既にブックは1つロードされています。いったん閉じて下さい   " )
		Exit Function
	End If

	Set ExcelBook = ExcelApp.Workbooks.Open(document.all( "target" ).value)

	' アクティブなウィンドウを最大化
	ExcelApp.ActiveWindow.WindowState = 2
	' 表示する( デフォルトは非表示
	ExcelApp.Visible = true

End Function

' **********************************************************
' ブックを閉じる
' **********************************************************
Function CloseExcelBook()

	If Not IsObject(ExcelApp) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	If Not IsObject(ExcelBook) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	' Excel として閉じる
	ExcelBook.Close()

	' オブジェクトとして開放する
	Set ExcelBook = Nothing

	' 変数として初期化する
	ExcelBook = Empty

End Function

' **********************************************************
' セルにデータをセットする
' **********************************************************
Function SetCellData()

	If Not IsObject(ExcelApp) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	If Not IsObject(ExcelBook) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	ExcelBook.Sheets("Sheet1").Cells(5, 5) = "あいうえお"

End Function

' **********************************************************
' 変更されたブックを変更をキャンセルして閉じる
' **********************************************************
Function CloseChangedExcelBook()

	If Not IsObject(ExcelApp) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	If Not IsObject(ExcelBook) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	' 保存した事にする
	ExcelBook.Saved = True

	' Excel として閉じる
	ExcelBook.Close()

	' オブジェクトとして開放する
	Set ExcelBook = Nothing

	' 変数として初期化する
	ExcelBook = Empty

End Function

' **********************************************************
' 変更されたブックを保存して閉じる
' **********************************************************
Function SaveExcelBook()

	If Not IsObject(ExcelApp) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	If Not IsObject(ExcelBook) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	' 保存
	ExcelBook.Save

	' Excel として閉じる
	ExcelBook.Close()

	' オブジェクトとして開放する
	Set ExcelBook = Nothing

	' 変数として初期化する
	ExcelBook = Empty

End Function

' **********************************************************
' Excel の確認メッセージがでないようにする
' **********************************************************
Function CancelDisplayAlert()

	If Not IsObject(ExcelApp) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	ExcelApp.DisplayAlerts = false

End Function

' **********************************************************
' Excel を終了する
' **********************************************************
Function EndExcel()

	If Not IsObject(ExcelApp) Then
		alert( "ブックを開いて下さい   " )
		Exit Function
	End If

	' 処理をキャンセルする
	If IsObject(ExcelBook) Then
		Call CloseChangedExcelBook()
	End If

	' アプリケーションとして終了する
	ExcelApp.Quit

	' オブジェクトとして開放する
	Set ExcelApp = Nothing

	' 変数として初期化する
	ExcelApp = Empty

End Function


</SCRIPT>
</HEAD>
<BODY>

<INPUT id="target" type="file" style='width:600px;'>
<br>
<INPUT
	class="command"
	type="button"
	value="Excel Book のロード"
	onClick='Call OpenExcelBook()'
>
<br>
<INPUT
	class="command"
	type="button"
	value="変更していない Excel Book を閉じる"
	onClick='Call CloseExcelBook()'
>
<br>
<INPUT
	class="command"
	type="button"
	value="セルにデータをセットする"
	onClick='Call SetCellData()'
>
<br>
<INPUT
	class="command"
	type="button"
	value="変更済みの Excel Book を変更をキャンセルして閉じる"
	onClick='Call CloseChangedExcelBook()'
>
<br>
<INPUT
	class="command"
	type="button"
	value="変更済みの Excel Book を保存して閉じる"
	onClick='Call SaveExcelBook()'
>
<br>
<INPUT
	class="command"
	type="button"
	value="Excel の確認メッセージがでないようにする"
	onClick='Call CancelDisplayAlert()'
>
<br>
<INPUT
	class="command"
	type="button"
	value="Excel を終了する"
	onClick='Call EndExcel()'
>

</BODY>
</HTML>
以下は実際の実行画面ですが、
http://lightbox.matrix.jp を信頼するサイトに登録すると実行可能になります







↓関連ドキュメント( localhost を信頼するサイトに登録するレジストリデータ ) http://lightbox.matrix.jp/ginpro/patio.cgi?mode=view2&f=227&no=9&type=ref&opt=text-align:left;margin-left:5px;&xml=y