HSPとExcel VBAで情報取得 (その3)
1.概要
HSP3やExcel VBAによるCOMオブジェクトの活用事例としての第三弾です。
今回は、前回記事に引き続き、日付と時刻やタスクバーのプロパティを表示させます。
また、FileSystemObjectによるファイルやドライブの詳細情報の取得についても取り上げて見ます。
FileSystemObjectはメソッドやパラメータが豊富でファイル操作に係わることはたいていのことはできますが、
HSPやExcel自体もファイル操作命令や関数が備わっているため、実際の実装については、実用面からHSPやExcel標準の関数等
を利用した方が良いと思います。
2.サンプル 2-1.日付と時刻のプロパティを表示させる
タスクトレイにある時計の日付と時刻の調整から起動される日付と時刻のプロパティをプ ログラム上から表示します。 WSHでは、シェルのSetTimeメソッドという便利なもが提供さ れています。 HSPでは、 newcom命令でShellApp変数とWshShell変数を COMオブジェクト型として初期化したのち、シェルのSetTime メソッドで日付と時刻のプロ パティを表示起動させます。
2-2.タスクバーのプロパティを表示する
スタートメニューの設定から起動するタスクバーとスタートメニューのプロパティを表示 します。WSHでは、シェルの TrayPropertiesメソッドという便利なもが提供されています。 HSPでは、 newcom命令でShellApp変数とWshShell変数を COMオブジェクト型として初期化したのち、 シェルのTrayPropertiesメソッドでタスクバー のプロパティをを表示起動させます。
2-3.ファイルの情報を取得する
ファイルのフルパス名や拡張子といった情報を取得します。HSPの標準関数には、getpath 関数というのがあり、 getpath関数機能のWSH版です。 ファイルの情報を取得するには、 Scripting.FileSystemObjectを使います。 HSPでは、newcom命令でobjFS変数をCOMオブジェクト型と して初期化したのち、 FileExistsメソッドと任意に指定したファイル名を引数として、フ ァイルの存在を確認するため、 objexFileオブジェクト 変数に代入しています。対象ファ イルの存在が確認できたなら、ファイル情報を取得するメソッドにファイル名を 引数とし て与えて、情報を取得します。利用するメソッドは、次の通りです。
3.ソースコードについて 掲載ソースコードのライセンスは、CC0 (クレジット表示不要、改変可、商用可) とします。自由に利用して頂いてかまいません。 尚、データの取得やプログラム実行において損害等が生じた場合は、筆者は一切の責任も負いません。全て自己責任でお願いします。
■関連記事
・HSPとExcel VBAで情報取得 (COMオブジェクトの活用)
・HSPとExcel VBAで情報取得 (その1)
・HSPとExcel VBAで情報取得 (その2)
・HSPとExcel VBAで情報取得 (その4)
2.サンプル 2-1.日付と時刻のプロパティを表示させる
タスクトレイにある時計の日付と時刻の調整から起動される日付と時刻のプロパティをプ ログラム上から表示します。 WSHでは、シェルのSetTimeメソッドという便利なもが提供さ れています。 HSPでは、 newcom命令でShellApp変数とWshShell変数を COMオブジェクト型として初期化したのち、シェルのSetTime メソッドで日付と時刻のプロ パティを表示起動させます。
;***** 日付と時刻のプロパティを表示 ***** newcom ShellApp, "Shell.Application" newcom WshShell, "WScript.Shell" ;▼日付と時刻のプロパティ ShellApp->"SetTime" wait 100 ret = WshShell("AppActivate", "日付と時刻") delcom WshShell delcom ShellApp stop
'***** 日付と時刻のプロパティを表示 ***** Sub TimeDateprop() Dim wsh, ShellApp As Object Set wsh = CreateObject("Wscript.Shell") Set ShellApp = CreateObject("Shell.Application") ShellApp.SetTime Sleep 100 wsh.AppActivate ("日付と時刻") Set ShellApp = Nothing Set wsh = Nothing End Sub
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
2-2.タスクバーのプロパティを表示する
スタートメニューの設定から起動するタスクバーとスタートメニューのプロパティを表示 します。WSHでは、シェルの TrayPropertiesメソッドという便利なもが提供されています。 HSPでは、 newcom命令でShellApp変数とWshShell変数を COMオブジェクト型として初期化したのち、 シェルのTrayPropertiesメソッドでタスクバー のプロパティをを表示起動させます。
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
;***** タスクバーのプロパティ表示 ***** newcom ShellApp, "Shell.Application" newcom WshShell, "WScript.Shell" ;タスクバーのプロパティ ShellApp->"TrayProperties" wait 100 ret=WshShell("AppActivate", "タスク バー") delcom WshShell delcom ShellApp stop
'***** タスクバーのプロパティ表示 ***** Sub taskbarprop() Dim wsh, ShellApp As Object Set wsh = CreateObject("Wscript.Shell") Set ShellApp = CreateObject("Shell.Application") ShellApp.TrayProperties Sleep 100 wsh.AppActivate ("タスク バー") Set ShellApp = Nothing Set wsh = Nothing End Sub
2-3.ファイルの情報を取得する
ファイルのフルパス名や拡張子といった情報を取得します。HSPの標準関数には、getpath 関数というのがあり、 getpath関数機能のWSH版です。 ファイルの情報を取得するには、 Scripting.FileSystemObjectを使います。 HSPでは、newcom命令でobjFS変数をCOMオブジェクト型と して初期化したのち、 FileExistsメソッドと任意に指定したファイル名を引数として、フ ァイルの存在を確認するため、 objexFileオブジェクト 変数に代入しています。対象ファ イルの存在が確認できたなら、ファイル情報を取得するメソッドにファイル名を 引数とし て与えて、情報を取得します。利用するメソッドは、次の通りです。
ファイル情報取得メソッド |
取得する情報 | メソッド |
ファイル名 | GetFileName |
フルパス | GetAbsolutePathName |
親フォルダ名 | GetParentFolderName |
ドライブ名 | GetDriveName |
拡張子 | GetExtensionName |
拡張子を除いた名前 | GetBaseName |
;***** ファイル情報の取得 ***** onexit *owari newcom objFS, "Scripting.FileSystemObject" sdim sFile,260,10 ;ファイルの指定 dialog "",16 : if stat==0 : stop ;ファイル存在の確認 (objexFile=0 : なし,objexFile=-1 : あり) objexFile=objFS("FileExists", refstr) if objexFile==0 { dialog "ファイルは存在しません。 結果="+objexFile stop } ;ファイル情報の取得 comres sFile(0) : objFS->"GetFileName" refstr comres sFile(1) : objFS->"GetAbsolutePathName" refstr comres sFile(2) : objFS->"GetParentFolderName" refstr comres sFile(3) : objFS->"GetDriveName" refstr comres sFile(4) : objFS->"GetExtensionName" refstr comres sFile(5) : objFS->"GetBaseName" refstr ;ファイル情報の表示 pos 10,10 font "Meiryo UI",14 : objmode 2 mes "ファイル名 : "+sFile(0) mes "フルパス : "+sFile(1) mes "親フォルダ名 : "+sFile(2) mes "ドライブ名 : "+sFile(3) mes "拡張子 : "+sFile(4) mes "拡張子を除いた名前 : "+sFile(5) mes " " mes "処理が終了しました。" stop *owari ;COMオブジェクト型で、有効なCOMオブジェクトを保持しているか if vartype(objFS)==6 { if varuse(objFS)==1 : delcom objFS } end
Sub GeteEasyFileInfo() '***** ファイル情報の取得 ***** Dim objFS As Object Dim i As Integer Dim SelFile As Variant Dim att As String Set objFS = CreateObject("Scripting.FileSystemObject") '***** ファイル選択 ***** SelFile = Application.GetOpenFilename("ファイル(*.*),*.*") If VarType(SelFile) = vbBoolean Then MsgBox "キャンセルされました" Exit Sub End If '***** 表示処理 ***** Cells(1, 1).Value = "ファイル名 : " & objFS.GetFileName(SelFile) Cells(2, 1).Value = "フルパス : " & objFS.GetAbsolutePathName(SelFile) Cells(3, 1).Value = "親フォルダ名 : " & objFS.GetParentFolderName(SelFile) Cells(4, 1).Value = "ドライブ名 : " & objFS.GetDriveName(SelFile) Cells(5, 1).Value = "拡張子 : " & objFS.GetExtensionName(SelFile) Cells(6, 1).Value = "拡張子を除いた名前 : " & objFS.GetBaseName(SelFile) Set objFS = Nothing End Sub
3.ソースコードについて 掲載ソースコードのライセンスは、CC0 (クレジット表示不要、改変可、商用可) とします。自由に利用して頂いてかまいません。 尚、データの取得やプログラム実行において損害等が生じた場合は、筆者は一切の責任も負いません。全て自己責任でお願いします。
■関連記事
・HSPとExcel VBAで情報取得 (COMオブジェクトの活用)
・HSPとExcel VBAで情報取得 (その1)
・HSPとExcel VBAで情報取得 (その2)
・HSPとExcel VBAで情報取得 (その4)
コメント
コメントを投稿