Excel 2010でVBAを使用して、同じフォルダーまたは別のフォルダーにあるいくつかのファイルのファイルサイズを返したいのですが。
ここでそれをExcelセルで使用する方法:
=GetDirOrFileSize("C:\Users\xxx\Playground\","filename.xxx")
ドイツ語版のWindowsをお持ちの場合:
=GetDirOrFileSize("C:\Users\xxx\Playground\";"filename.xxx")
VBAモジュールの機能は次のとおりです(開発者ツールを有効にして、これをコピーして新しいモジュールに貼り付けます)。
Function GetDirOrFileSize(strFolder As String, Optional strFile As Variant) As Long
'Call Sequence: GetDirOrFileSize("drive\path"[,"filename.ext"])
Dim lngFSize As Long, lngDSize As Long
Dim oFO As Object
Dim oFD As Object
Dim OFS As Object
lngFSize = 0
Set OFS = CreateObject("Scripting.FileSystemObject")
If strFolder = "" Then strFolder = ActiveWorkbook.path
If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\"
'Thanks to Jean-Francois Corbett, you can use also OFS.BuildPath(strFolder, strFile)
If OFS.FolderExists(strFolder) Then
If Not IsMissing(strFile) Then
If OFS.FileExists(strFolder & strFile) Then
Set oFO = OFS.Getfile(strFolder & strFile)
GetDirOrFileSize = oFO.Size
End If
Else
Set oFD = OFS.GetFolder(strFolder)
GetDirOrFileSize = oFD.Size
End If
End If
End Function '*** GetDirOrFileSize ***
これまでに言及されていない、とても素晴らしくシンプルなVBA関数があります FileLen :
FileLen("C:\Temp\test file.xls")
ファイルのサイズをbytesで返します。
ディレクトリ内のファイルをループすることと組み合わせて、最初に望んだことを達成することができます(フォルダー内のファイルのサイズを取得します)。
これは、セミコロン;
をパラメーターセパレーターとして使用することに関する質問への回答です。
ポイント/フルストップ.
を小数点として使用するローカル(米国など)では、コマ,
がリストセパレーターとして使用されます。この場合、VBA関数のパラメーターリストのセパレーターとして使用されます。と手順。
他のローカル(一般的にはDEやヨーロッパなど)では、小数点がコマ,
であり、同じ記号をリストセパレーターとして使用すると混乱が生じるため、セミコロン;
が使用されます。代わりに