コメント |
@DIV
IE 上で動かすスクリプトは、通常 @C:RED(JavaScript) ですが、Microsoft の資源を有効に活用するには、
VBScript で動かすほうがいろいろ都合が良い場合が多いです。
インターネット上で ActiveX のスクリプト処理を許してしまうと@C:red(危険)ですが、
業務アプリケーションとして社内サーバを使うのであれば、その限りではありません。
@END
http://lightbox.on.coocan.jp/image/trust_localhost.png
http://lightbox.on.coocan.jp/image/trust_activex.png
@DIV
上記の設定は開発中の設定で、http://localhost から提供されたページ上で
ActiveX の実行を無条件に許してしまう設定です。
このような環境ですと、IE は通常のアプリケーションと変わらなくなり、
あらゆるローカルの資源にアクセスが可能になります。
@END
[[Excel 処理のサンプル]]
@DIV
<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>
@END
@DIV
以下は実際の実行画面ですが、
http://lightbox.matrix.jp を信頼するサイトに登録すると実行可能になります
@END
@HTML
<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>
<INPUT id="target" type="file" style='width:600px;'>
<br>
<INPUT
language="VBScript"
class="command"
type="button"
value="Excel Book のロード"
onClick='Call OpenExcelBook()'
>
<br>
<INPUT
language="VBScript"
class="command"
type="button"
value="変更していない Excel Book を閉じる"
onClick='Call CloseExcelBook()'
>
<br>
<INPUT
language="VBScript"
class="command"
type="button"
value="セルにデータをセットする"
onClick='Call SetCellData()'
>
<br>
<INPUT
language="VBScript"
class="command"
type="button"
value="変更済みの Excel Book を変更をキャンセルして閉じる"
onClick='Call CloseChangedExcelBook()'
>
<br>
<INPUT
language="VBScript"
class="command"
type="button"
value="変更済みの Excel Book を保存して閉じる"
onClick='Call SaveExcelBook()'
>
<br>
<INPUT
language="VBScript"
class="command"
type="button"
value="Excel の確認メッセージがでないようにする"
onClick='Call CancelDisplayAlert()'
>
<br>
<INPUT
language="VBScript"
class="command"
type="button"
value="Excel を終了する"
onClick='Call EndExcel()'
>
@HEND
↓関連ドキュメント( 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
|