【Functionメモ】情報取得やファイル関連をまとめる

2020年4月27日月曜日

Excel Functionメモ

t f B! P L


情報取得やファイル関連に関連する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



何か気になったらGoogle検索で!

このサイトについて


【テンワンナップ】
普段の生活、仕事などでちょっと効率的に、ちょっと便利に、作業等を効率的にできる様な事をまとめていきます。 1Upまではいきませんが、0.1Upで生産性向上といったところですかね。Excel作業も0.1UPして生産性向上を図る為の小技も紹介していきます。

注目の投稿

【Gmailとスプレッドシート】AIのGeminiを使って、条件に合ったメールを一瞬で抽出するスクリプトを作成してもらった過程を紹介(自分では1行もプログラミングせずにGeminiに作ってもらうための具体的なプロンプトの入力内容を紹介。)

はじめに:Gmailとスプレッドシートの連携を簡単に実現したい 日々、メールがどんどん溜まっていき、重要な情報を取り出すのが面倒になったことはありませんか?特に、Gmail内で過去のメールから特定の情報を抽出したり、スプレッドシートに整理したりする作業は時間がかかりますよね。 今...

人気の投稿

このブログを検索

カウンター

連絡フォーム

名前

メール *

メッセージ *

rakuten

QooQ