情報取得やファイル関連に関連するFuncitonをまとめておきます。
そのままマクロ部分に貼り付けて、エクセルの自作関数として使うもよし、何か自分で新しく作る際の参考にしてもらってもOK!!
現時点のFunction
・再帰ロジックでファイル一覧取得
・ファイルフルパスから一番右のファイル名だけ取得する(簡易版)
・
再帰ロジックでファイル一覧取得
【Function名称】
ファイル一覧取得
【Function使い方】
VBAでシートにフォルダを指定して実行する形
【概要】
再帰ロジックを使ってファイル一覧を取得するロジックのメモです。グルグル回って、終わったらドンドン抜けていきます(@_@)
'-----------------------------------------
'関数名 :fncGetFileNameList
'機能 :入力されたセルに入力されたフォルダから一覧を取得する
'-----------------------------------------
Function fncGetFileNameList()
Dim str対象フォルダパス As String
Dim intR As Integer
intR = 5
'---50000行ぐらい削除で初期化
Rows(intR & ":" & 50000).Delete
'---フォルダ一覧作成対象のフォルダパス(シートから取得)
str対象フォルダパス = Range("c2").Value
'---"\"マークが無ければ、つける
If Right(str対象フォルダパス, 1) <> "\" Then
str対象フォルダパス = str対象フォルダパス & "\"
End If
'---一覧取得実行
Call getFil(str対象フォルダパス, intR)
MsgBox ("完了")
End Function
'-----------------------------------------
'関数名 :getFil
'機能 :入力されたフォルダからファイル名を取得。フォルダがあれば自分をそのフォルダをパラメータで再度呼び出す。
'-----------------------------------------
Sub getFil(str対象フォルダパス As String, intR As Integer)
Dim objFs As Object
Dim obj対象フォルダ As Object
Dim objサブフォルダ達 As Object
Dim objサブフォルダ As Object
Dim objファイル As Object
Set objFs = CreateObject("Scripting.FileSystemObject")
'---フォルダオブジェクト取得
Set obj対象フォルダ = objFs.getfolder(str対象フォルダパス)
'---まずは、サブフォルダ達オブジェクトを取得
Set objサブフォルダ達 = obj対象フォルダ.subfolders
'---サブフォルダオブジェクト毎に実行
For Each objサブフォルダ In objサブフォルダ達
'---サブフォルダパスを出力する
Range("b" & intR).Value = objサブフォルダ.Path
intR = intR + 1
'---サブフォルダパスを対象フォルダパスとして、一覧取得実行(再帰)
Call getFil(objサブフォルダ.Path, intR)
Next
'---ここまで来たらファイルを出力
Set objファイル達 = obj対象フォルダ.Files
For Each objファイル In objファイル達
Range("b" & intR).Value = Replace(objファイル.Path, objファイル.Name, "")
Range("c" & intR).Value = objファイル.Name
intR = intR + 1
Next
ファイルフルパスから一番右のファイル名だけ取得する(簡易版)
【Function名称】
簡易ファイル名取得
【Function使い方】
=fGetfname([ファイルのフルパス])
【概要】
"\xxx\aaa\ddd\ccc.xlsx"を指定すると"ccc.xlsx"のファイル名部分だけを返却してくれます。
特にファイル名に限定していないので、実は一番右の\以降が取れるだけです。
入力チェックに使えますかね。
'-----------------------------------------
'関数名 :フルパスからファイル名取得(簡易版)
'機能 :フルパスから一番\¥などで区切った一番右の物を返します。
'入力項目:フルパス
'※文字列で区切っているだけ
'-----------------------------------------
Function fGetfname(strFPath As String) As String
Dim strFPathSplit
'---/とか\で区切って
strFPathSplit = Split(Replace(strFPath, "/", "\"), "\")
'---配列の最後をセット
fGetfname = strFPathSplit(UBound(strFPathSplit))
End Function
コンピュータ名取得
【Function名称】
コンピュータ名取得
【Function使い方】
=コンピュータ名取得()
【概要】
呼び出すことで、使用中のコンピュータ名を取得します。
'-----------------------------------------
'関数名 :コンピュータ名取得
'機能 :コンピュータの名称を取得する
'入力項目:なし
'-----------------------------------------
Function コンピュータ名取得() As String
Dim NtwkObj As Object
Set NtwkObj = CreateObject("WScript.Network")
'---コンピュータ名を取得
コンピュータ名取得 = NtwkObj.ComputerName
Set NtwkObj = Nothing
End Function
ユーザ名取得
【Function名称】
ユーザ名取得
【Function使い方】
=ユーザ名取得()
【概要】
呼び出すことで、使用中のユーザ名を取得します。
照合したり、それによって処理を分けたりするときに使えます。
ログを出力したりすることも可能ですね。
'-----------------------------------------
'関数名 :ユーザ名取得
'機能 :ユーザの名称を取得する
'入力項目:なし
'-----------------------------------------
Function ユーザ名取得() As String
Dim NtwkObj As Object
Set NtwkObj = CreateObject("WScript.Network")
'---ユーザ名を取得
ユーザ名取得 = NtwkObj.UserName
Set NtwkObj = Nothing
End Function
0 件のコメント:
コメントを投稿