SQLの窓

2019年01月10日


IE11 で VBScript のクラスを使用して Excel(Excel.Application) の処理を検証

通常の「インターネット」では行いません。「信頼済みサイト」でのみ 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">

Const xlMaximized = -4137

Function Creata_Excel_Book() 

	Dim ExcelPath : ExcelPath = "c:\temp\test.xlsx"

	' 処理前の確認
	alert("OK")
	console.log( "OK" )

	' オブジェクト
	Dim MyExcel

	' オブジェクト作成
	Set MyExcel = new CExcel

	' 空の Book 作成 / 引数にパスが指定されているので、
	' そのパスで上書き保存する
	Set Workbook = MyExcel.Create( ExcelPath )

	' セルにデータをセット
	Workbook.ActiveSheet.Cells(2, 1) = "IE11+Excelです"

	' 変更内容を上書き
	Workbook.Save

	' オブジェクト情報の表示
	console.dir( MyExcel )
	console.dir( Workbook )

	' Excel オブジェクトの終了
	MyExcel.Quit

	' Windows アプリケーションとして開く
	MyExcel.Load( ExcelPath )

	' 解放
	Set MyExcel = Nothing

End Function

Class CExcel

	Public App
	Public WshShell
	Public ErrDescription
	Private WorkBook
	Public CurBook

' ************************************************
' インスタンスが作成されたときの処理
' ************************************************
	Private Sub Class_Initialize()

		Call InitSetting()
		console.log( "Class_Initialize" )

	End Sub

' ************************************************
' インスタンスが終了したときの処理
' ( Set インタンス変数 = Nothing で発生 )
' ************************************************
	Private Sub Class_Terminate()

		Call Quit()
		console.log( "Class_Terminate" )

	End Sub

' ************************************************
' 初期処理
' ************************************************
	Public Default Function InitSetting()

		if IsEmpty( App ) then
			Set App = CreateObject("Excel.Application")
		end if 
		if IsEmpty( WshShell ) then
			Set WshShell = CreateObject("WScript.Shell")
		end if 

		' ユーザーに入力を促すメッセージを表示させないようにする
		App.DisplayAlerts = False

		Set CurBook = Nothing

	end function

' ************************************************
' 終了
' ************************************************
	Public Function Quit()

		If not IsEmpty( App ) Then
			For Each Workbook In App.Workbooks
				' 全てのブックを保存した事にする
				WorkBook.Saved = True
			Next
			App.Quit
			Set App = Nothing
			App = Empty
			Set CurBook = Nothing
		End If

	End Function

' ************************************************
' 表示・非表示
' ************************************************
	Public Property Let Visible( bFlg )
		App.Visible = bFlg
	End Property 
	Public Property Get Visible
		Visible = App.Visible
	End Property

' ************************************************
' 開く
' ************************************************
	Public Function Open( strPath )

		on error resume next
		Set Open = App.Workbooks.Open(strPath)
		if Err.Number <> 0 then
			Set Open = Nothing
			ErrDescription = Err.Description
			Exit Function
		end if
		on error goto 0
		Set CurBook = Open

		' アクティブなウィンドウを最大化
		App.ActiveWindow.WindowState = xlMaximized

	End Function

' ************************************************
' 新規ブック作成
' ************************************************
	Public Function Create( strPath )

		Dim nBooks

		App.Workbooks.Add
		nBooks = App.Workbooks.Count

		' 戻り値セット
		Set Create = App.Workbooks( nBooks )

		' 処理
		Set CurBook = Create
		CurBook.Activate

		' アクティブなウィンドウを最大化
		App.ActiveWindow.WindowState = xlMaximized

		if strPath <> "" then
			on error resume next
			CurBook.SaveAs( strPath )
			if Err.Number <> 0 then
				MsgBox( Err.Description )
				Exit Function
			end if
			on error goto 0
		end if

	End Function

' ************************************************
' 閉じる
' ************************************************
	Public Function Close( MyBook )

		if IsObject( MyBook ) then
			MyBook.Saved = True
			MyBook.Close
			Set MyBook = Nothing
			MyBook = Empty
		else
			if CurBook is Nothing then
			else
				CurBook.Saved = True
				CurBook.Close
				Set CurBook = Nothing
			end if
		end if

	End Function

' ******************************************************
' 上書き保存
' ******************************************************
	Function Save( MyBook )

		if IsObject( MyBook ) then
			MyBook.Save
		else
			CurBook.Save
		end if

	End Function

' ******************************************************
' 名前を付けて保存
' ******************************************************
	Function SaveAs( MyBook, strPath )

		if IsObject( MyBook ) then
			MyBook.SaveAs strPath
		else
			CurBook.SaveAs strPath
		end if

	End Function

' ******************************************************
' 通常アプリケーションとして開く
' ******************************************************
	Function Load( strPath )

		if not IsEmpty( App ) then
			MsgBox( "Excel をロードする前に、Quitを実行して下さい   " )
			Exit Function
		end if

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

	End Function

End Class

</script>
</head>
<body>

<input type="button" value="実行" onclick="Call Creata_Excel_Book()" language="VBScript">

</body>
</html>





posted by lightbox at 2019-01-10 16:03 | IE | このブログの読者になる | 更新情報をチェックする

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
posted by lightbox at 2019-01-10 14:34 | IE | このブログの読者になる | 更新情報をチェックする

2019年01月09日


VBScript のコードを書いた HTML を IEのツールメニューにアドオンする



IE拡張メニューとほぼ近いものですが、現在表示されているページ全体に対して「何かをする」という機能に合っています。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions\{7D4A0D6B-9722-4106-8D10-6E3684F04594}]
"CLSID"="{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}"
"MenuText"="テストメニュー"
"MenuStatusBar"="ステータスバーに表示される文字列"
"Script"="C:\\TEMP\\menuex_location.html"



(HKEY_CURRENT_USER にするとユーザ単位です)
<SCRIPT language="VBScript">

	on error resume next
	' *************************************************
	' URLの表示
	' *************************************************
	str = external.menuArguments.document.URL
	if Err.Number <> 0 then
		str = "URL を取得できませんでした"
	else
		' 取得できたらクリップボードにセット
		Call window.clipboardData.setData("Text",str)
	end if
	on error goto 0

	alert(str)

</SCRIPT>

これはあくまでサンプルなので、レジストリをインポートした後、C:\TEMP\menuex_location.html を作成して上記 VBScript のコードを書き込む必要があります

※ 7D4A0D6B-9722-4106-8D10-6E3684F04594 は、任意のGUID なので、WSH : GUID取得 で個別に作成します

※ 以下のコマンドを実行するとクリップボードに GUID を取得できます
cmd /c echo Set TypeLib=CreateObject("Scriptlet.TypeLib"):Wscript.echo TypeLib.Guid>%temp%\_.vbs&cscript.exe /NOLOGO %temp%\_.vbs | clip

Adding Menu Items にこれらの設定に関する仕様があります(英文)

Exec エントリを使用すると実行ファイルを使用可能です 


▼ アドオンの管理で確認できます





posted by lightbox at 2019-01-09 16:34 | IE | このブログの読者になる | 更新情報をチェックする

2018年12月26日


IE11のソースエディタの変更( VBScript のみ )

最新の IE11 では、HKEY_CURRENT_USER でしか動作しないようです。





全て VBScript のみで実行しています。ですから、ファイル参照ウインドウの表示が、現在表示しているウインドウに隠れたりする場合があるので注意して下さい。

ieSrcEditor.wsf をエクスプローラから実行すると、ファイルを参照するダイアログが開きます。内部のコードは以下のようになっていますが、必要な関数等はインターネット上に保存して使用しています。ここでは、ローカルのファイルを開いてパスを取得する為に、InternetExplorer.Application を使用しています。

アンインストールは、zip 内の uninstall.reg か 以下のテキストを uninstall.reg として shift_jis か Unicode で保存してエクスプローラから実行します。内部は、Microsoft の仕様によるレジストリエントリの削除記述となっています。ですから、実際削除を行うのは、regedit.exe です。
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2]
"1201"=dword:00000000
"1406"=dword:00000000



▼ 実行用のソースコードです
<JOB>
<COMMENT>
************************************************************
 WEB WSH 実行スケルトン
************************************************************
</COMMENT>

<COMMENT>
************************************************************
 外部スクリプト定義
************************************************************
</COMMENT>
<SCRIPT
	language="VBScript"
	src="http://lightbox.in.coocan.jp/laylaClass.vbs">
</SCRIPT>

<SCRIPT language=VBScript>
' 管理者として実行を強制する
Set obj = Wscript.CreateObject("Shell.Application")
if Wscript.Arguments.Count = 0 then
	obj.ShellExecute "wscript.exe", WScript.ScriptFullName & " runas", "", "runas", 1
	Wscript.Quit
end if

' ***********************************************************
' 処理開始
' ***********************************************************
Call laylaFunctionTarget( "http://lightbox.in.coocan.jp/" )
Call laylaLoadFunction( "baseFunction.vbs" )
Call laylaLoadFunction( "wmiReg.vbs" )
Call laylaLoadFunction( "toolFunction.vbs" )

' **********************************************************
' エディタ選択
' **********************************************************
strValue = OpenLocalFileName
if strValue = "" then
	Wscript.Quit
end if

' **********************************************************
' レジストリ
' **********************************************************
strPath = "SOFTWARE\Microsoft\Internet Explorer\View Source Editor\Editor Name"
Call WMIRegCreateKey( HKEY_CURRENT_USER, strPath )
strValue = Dd( strValue )
Call WMIRegSetStringValue( HKEY_CURRENT_USER, strPath, Empty, strValue )

MsgOk( strValue & " を IE のソースエディタとして登録しました" )

Function OpenLocalFileName( )

	Call GetObj( "IEDocument", "InternetExplorer.Application" )
	IEDocument.Navigate( ScriptDir( ) & "\local.htm" )
	IEDocument.document.getElementsByTagName("BODY")(0).innerHTML = "<input id=FilePath type=file>"
	IEDocument.document.getElementById("FilePath").click
	if IEDocument.document.getElementById("FilePath").value = "" then
		OpenLocalFileName = ""
		IEDocument.Quit
		Set IEDocument = Nothing
		Exit Function
	end if

	OpenLocalFileName = IEDocument.document.getElementById("FilePath").value

	IEDocument.Quit
	Set IEDocument = Nothing

End Function
</SCRIPT>
</JOB>






タグ:ツール IE
posted by lightbox at 2018-12-26 15:00 | IE | このブログの読者になる | 更新情報をチェックする

IE11 から VBScript で ODBCで使用されるデータベース(例えばSQLServer) より Excel でデータをエクスポートする

Microsoft.Jet.OLEDB.4.0 を使用したいので、IE11 を 32 ビットで動作させる事が必要です。Access も Excel も古い拡張子を使用していますが、基本的に昔の処理ですし、Microsoft に邪魔されたく無い( 何勝手にするか解らない )ので、そうしています。

エクスポート用の SQL を使用する為に、接続は Access で行って、Access 内で可能な参照方法(修飾のようなもの)を用いて、SQLServer と Excel に動的にアクセスしています。

IE11 を 32 ビットで動作させる

通常、IE11 は 32ビットで動作しているはずですが、確認の為にF12 キーで開発者ツールを表示させて、コンソールタブに移動します。次に、navigator.userAgent と入力して表示された文字列の中に WOW64 の文字列があれば、32ビットで動作しています。

もし無ければ、64ビットで動作しているので、『インターネットオプション』の『詳細設定』のセキュリティで、【拡張保護モードで 64 ビット プロセッサを有効にする】と【拡張保護モードを有効にする】のチェックを外します。

※ 拡張保護モードに関する詳細は、Microsoft のこちら( E10 & IE11 : 拡張保護モードの実態 )から参照できます。

実行する URL を信頼するサイトに登録



レベルのカスタマイズで、『スクリプトを実行しても安全だとマークされていないActiveX コントロール』を『有効』 にして、『ドメイン間のデータソースのアクセス』も有効にします
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2]
"1201"=dword:00000000
"1406"=dword:00000000


※ 関連する Microsoft ドキュメント(上級ユーザー向けの Internet Explorer セキュリティ ゾーン関連のレジストリ エントリ)
※ IEのセキュリティゾーン関連のレジストリエントリ


IE11 を IE10 として実行してエクスポート
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=10">
<meta http-equiv="Content-type" content="text/html; charset=shift_jis">
<script language="VBScript">

' ***********************
' 必要なオブジェクト作成
' ***********************
on error resume next

' ファイル削除用
Set Fso = CreateObject( "Scripting.FileSystemObject" )
if Err.Number <> 0 then
	alert("Fso:"&Err.Description)
end if

' エクスポート実行用
Set Cn = CreateObject( "ADODB.Connection" )
if Err.Number <> 0 then
	alert("Cn:"&Err.Description)
end if
Cn.CursorLocation = 3

' ダミー Access 作成用
Set Adox = CreateObject( "ADOX.Catalog" )
if Err.Number <> 0 then
	alert("Adox:"&Err.Description)
end if

' ディレクトリ参照と OS パス取得用
Set Shell = CreateObject( "Shell.Application" )
if Err.Number <> 0 then
	alert("Shell:"&Err.Description)
end if
on error goto 0

Function Export()

	' ***********************
	' 2回目の実行
	' ***********************
	if Cn is nothing then
		Set Cn = CreateObject( "ADODB.Connection" )
		Cn.CursorLocation = 3
	end if

	' ***********************
	' 実行確認
	' ***********************
	if not confirm( "エクスポートを実行しますか?" ) then
		Exit Function
	end if

	Dim obj

	' ***********************
	' ディレクトリ選択
	' フラグは https://docs.microsoft.com/ja-jp/windows/desktop/api/shlobj_core/ns-shlobj_core-_browseinfoa
	' ***********************
	on error resume next 
	Set obj = Shell.BrowseForFolder( 0, "出力先のディレクトリを選択して下さい", 11+&H40, 0 )
	if Err.Number <> 0 then
		alert(Err.Description)
	end if
	on error goto 0

	' ***********************
	' キャンセル
	' ***********************
	if obj is nothing then
		Exit Function
	end if

	' ***********************
	' 一応チェック
	' ※ フラグ使用しているので必要無いはず
	' ***********************
	if not obj.Self.IsFileSystem then
		alert( "ファイルシステムではありません" )
		Exit Function
	end if

	' ***********************
	' 選択してフォルダのパス
	' ***********************
	SelectDir = obj.Self.Path

	' ***********************
	' ダミー用のパス
	' C:\Users\lightbox\AppData\Temp\dummy.mdb
	' ***********************
	Set objFolder = Shell.Namespace(&H1c)
	Set objFolderItem = objFolder.Self
	strPath = objFolderItem.Path & "\Temp\dummy.mdb"

	' ***********************
	' 既存のダミー削除
	' ***********************
	on error resume next 
	Fso.DeleteFile(strPath)
	on error goto 0

	' ***********************
	' 出力 Excel 削除
	' ***********************
	on error resume next 
	Fso.DeleteFile(SelectDir & "\Export.xls")
	on error goto 0

	' ***********************
	' ダミー用 mdb 作成
	' ***********************
	on error resume next
	Adox.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
		"Data Source=" & strPath & ";"
	if Err.Number <> 0 then
		alert(strPath & " : " & Err.Description)
	end if
	on error goto 0

	' ***********************
	' MDB 接続用文字列
	' ***********************
	ConnectionString = _
		"Provider=Microsoft.Jet.OLEDB.4.0;" & _
		"Data Source=" & strPath & ";"

	on error resume next
	Cn.Open ConnectionString
	if Err.Number <> 0 then
		alert(ConnectionString & " : " & Err.Description)
		Exit Function
	end if
	on error goto 0

	' ***********************
	' エクスポート用 SQL
	' ***********************
	Query = "select * "
	Query = Query & "into [Excel 8.0;DATABASE=" & SelectDir & "\Export.xls].[出力データ] "
	Query = Query & " from [ODBC;Driver={SQL Server};SERVER=サーバ;Database=データベース;UID=sa;PWD=パスワード].テーブル名"

	on error resume next
	Cn.Execute Query
	if Err.Number <> 0 then
		Call Cn.Close()
		alert(Err.Description)
		Exit Function
	end if
	on error goto 0

	alert("処理が終了しました")

	Call Cn.Close()

	Set Cn = Nothing

End Function

</script>
</head>
<body>
<input id="export" type="button" value="エクスポート" language="VBScript" onclick="Call Export()">
</body>
</html>


本当は、このページを window.open で開けて、終了したら close させます。そうすれば、dummy.mdb がアプリケーションから解放されます。


補足

Windows7 で実際に運用しているコードです。Windows10 に完全対応する為に、今回コードを整備して Windows10 でテストを行いました。この次の段階としては、VBScript やめて JScript で書いて処理します( そうすると、jQuery 使えますし )





posted by lightbox at 2018-12-26 14:36 | IE | このブログの読者になる | 更新情報をチェックする

2018年08月10日


IE11 で『安全だとマークされていないActiveX』を使用可能にして実行可能な Windows 処理のサンプル

HTA(HTMLアプリケーション) のコードを html として IE11 でデバッグする方法 を行って、localhost や イントラネットのサーバを信頼するサイトに登録すると使えます。

実行は JavaScript で簡単な関数を用意して実行します。
ごみ箱 explorer.exe /n,::{645FF040-5081-101B-9F08-00AA002F954E}
ファイル名を指定して実行 rundll32.exe shell32.dll,#61
インイストールされたソフトウェア(プログラムと機能) rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl
ネットワーク接続 rundll32.exe shell32.dll,Control_RunDLL ncpa.cpl
環境変数ダイアログ rundll32.exe sysdm.cpl,EditEnvironmentVariables
Windows Update control.exe /name Microsoft.WindowsUpdate
デバイスマネージャ control.exe /name Microsoft.DeviceManager
フォルダオプション rundll32.exe shell32.dll,Options_RunDLL 7
ネットワークドライブの割り当てダイアログ rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL Connect
デスクトップアイコンの設定 control.exe desk.cpl,,0
メモ帳 notepad.exe
ペイント mspaint.exe
電卓 calc.exe
プリンタ一覧 control.exe /name Microsoft.DevicesAndPrinters
Microsoft Excel excel.exe
Microsoft Word winword.exe
マイドキュメント explorer C:\Users\%USERNAME%\Documents
リソープリンタ 管理ページ rundll32.exe url.dll,FileProtocolHandler http://192.168.10.37/
デスクトップの アプリケーション.mde C:\Users\%USERNAME%\Desktop\アプリケーション.mde
デスクトップの Book1.xlsx C:\Users\%USERNAME%\Desktop\Book1.xlsx
\\コンピューター名\共有 \\pc01\mydata\2018

用意する JavaScript の処理
<script>
function newObject( className ) {

	var obj;

	try {
		obj = new ActiveXObject( className );
	}
	catch (e) {
		obj = null;
	}

	return obj;

}

var wsh = newObject("WScript.Shell");

function wshRun( strPath ) {

	wsh.Run( "RunDLL32.EXE url.dll,FileProtocolHandler " + "\"" + strPath + "\"" )

}

function wshRunExe( strPath ) {

	wsh.Run( strPath )

}

</script>

Windows の一般アプリケーション(.exe) は、wshRunExe を使用します。拡張子による実行には、ファイルのパスを渡して wshRun を使用します。( strPath に渡すパス内の文字列は HTML 上に文字列として置く場合、 \ が \\ となるようにします )

\\コンピューター名\共有 のネットワーク参照は、A 要素で href に指定してエクスプローラで開く事ができます。




posted by lightbox at 2018-08-10 16:38 | IE | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

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

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