SQLの窓

2019年01月10日


IE 専用 : 「信頼済みサイト」でのみ行う、WEBページのデータの Excel への転送



通常の「インターネット」では行いません。「信頼済みサイト」でのみ ActiveX を実行可能にしてから対象ページを登録して、WEB ページのデータを Excel のブックに転送して保存します。

業務アプリケーションとして「運用ルール」がきちんと決められ、システム管理者が居られると言う前提で通常は利用されます。

▼ 以下、前提となる設定




画像では、「localhost」ですが、イントラネットですと、単純にサーバー名になります

以下ソースコード
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=10">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script language="VBScript">

Dim WSH
Dim ExcelApp

' ******************************************************
' Excel 実行
' ******************************************************
Function LoadExcel(strPath)

	If Not IsObject(WSH) Then
		Set WSH = CreateObject("WScript.Shell")
	End If

	Call WSH.Run( "RunDLL32.EXE shell32.dll,ShellExec_RunDLL " & _
		strPath )

End Function

' ******************************************************
' Excel 処理
' ******************************************************
Function ExcelAction()

	' 読み込む Excel のパス
	Dim FilePath : FilePath = "C:\temp\Book1.xlsx"
	' 書き込む Excel のパス
	Dim FilePathResult : FilePathResult = "C:\temp\Book1_result.xlsx"

	' Excel.Application
	Dim ExcelApp
	' ブック
	Dim MyBook
	' シート
	Dim Sheet

	Set ExcelApp = CreateObject("Excel.Application")

	' 表示状態にする( 非表示にしても良いが、
	' 処理が長い場合は表示しておいたほうが良い
	ExcelApp.Visible = True
	' 確認ダイアログを出さない
	ExcelApp.DisplayAlerts = False

	' ブックを読み込む
	Set MyBook = ExcelApp.Workbooks.Open(FilePath)

	' 対象シート
	Set Sheet = MyBook.Sheets("Sheet1")

	' セルにデータをセット
	Dim tbl,rows,I,cols

	' テーブルオブジェクトを取得
	' ※ VB で配列は、() で参照する
	Set tbl = document.getElementsByTagName("table")(0)

	' 行のコレクション
	Set rows = tbl.getElementsByTagName("tr")

	' th は読み飛ばすので、1 から開始
	For I = 1 to ( rows.length - 1 )
		' 列のコレクション
		Set cols = rows(I).getElementsByTagName("td")
		For J = 0 to ( cols.length - 1 )
			if J = 0 or J = 3 then
				' 数字データを文字列としてセルにセットする
				Sheet.Cells(I+5, J+1) = "'" & cols(J).innerText
			else
				Sheet.Cells(I+5, J+1) = cols(J).innerText
			end if
		Next
	Next

	' 上書き保存
	MyBook.SaveAs FilePathResult

	' Excel を終了
	ExcelApp.Quit

	' Excel 解放
	Set ExcelApp = Nothing

	' 保存したブックを Excel で実行
	Call LoadExcel( FilePathResult )

End Function

</script>
</head>
<body>
<input type="button" value="Excel起動" language="VBScript" onclick='Call ExcelAction()'>

<style>
#lboxtable * {
	font-family: 'メイリオ','MS Pゴシック';
	font-size: 12px;
}
#lboxtable table {
	border-collapse: collapse;
	border: solid #000000 1px;
	background-color: #ffffff;
}
#lboxtable td{
	padding: 5px;
	border: solid #000000 1px;
	white-space: nowrap;
}
#lboxtable th {
	padding: 5px;
	border: solid #000000 1px;
	background-color: silver;
	white-space: nowrap;
}
</style>
<div id="lboxtable">
	<table>
		<tr>
			<th>社員コード</th>
			<th>氏名</th>
			<th>フリガナ</th>
			<th>所属</th>
			<th>性別</th>
			<th>給与</th>
		</tr>
		<tr>
			<td>0001</td>
			<td>浦岡 友也</td>
			<td>ウラオカ トモヤ</td>
			<td>0003</td>
			<td>0</td>
			<td>270000</td></tr>
			<tr>
			<td>0002</td>
			<td>山村 洋代</td>
			<td>ヤマムラ ヒロヨ</td>
			<td>0003</td>
			<td>1</td>
			<td>300000</td></tr>
			<tr>
			<td>0003</td>
			<td>多岡 冬行</td>
			<td>タオカ フユユキ</td>
			<td>0002</td>
			<td>0</td>
			<td>250000</td></tr>
			<tr>
			<td>0004</td>
			<td>高田 冬美</td>
			<td>タカタ フユミ</td>
			<td>0003</td>
			<td>1</td>
			<td>250000</td>
		</tr>
	</table>
</div>

</body>
</html>

IE 専用なので、スクリプトは VBScript を使用しています。Windows のオブジェクトなので、VBScript で使うほうがいろいろ都合が良く、VB や VBA の情報が参考にできます

⭐ 元になるブックは、C:\temp\Book1.xlsx としていますが、場所に制限はありません
⭐ 転送後、別のブックに保存してから、再度 Excel を普通に呼び出して開いています
⭐ 元になるブックを書式として完成させておいて、データのみ転送するのが本来の方法です
⭐ Excel に対する操作はもっといろいろ可能です





タグ:VBScript excle IE
【IEの最新記事】
posted by lightbox at 2019-01-10 14:34 | IE | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり