Here how to use it in Excel Cell:
=GetDirOrFileSize("C:UsersxxxPlayground","filename.xxx")
If you have a german Windows than:
=GetDirOrFileSize("C:UsersxxxPlayground";"filename.xxx")
Here is the function for the VBA modul: (Just enable the Developer tools, and copy and paste this into a new modul)
Function GetDirOrFileSize(strFolder As String, Optional strFile As Variant) As Long
'Call Sequence: GetDirOrFileSize("drivepath"[,"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 ***
DarkJoker1992 148 / 4 / 0 Регистрация: 19.02.2013 Сообщений: 369 |
||||
1 |
||||
Как узнать размер файла?03.03.2015, 17:21. Показов 14857. Ответов 5 Метки нет (Все метки)
Здравствуйте,нашел такой код только он чёт не правельно работает, подскажите пожалуйста
когда размер файла меньше 20к байт выдаёт MsgBox (123) и MsgBox (321) а когда больше только MsgBox (321)
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
03.03.2015, 17:49 |
2 |
|||
Сообщение было отмечено DarkJoker1992 как решение Решение
1 |
Hugo121 6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
||||
03.03.2015, 21:13 |
3 |
|||
0 |
The trick Модератор 9167 / 3405 / 853 Регистрация: 22.02.2013 Сообщений: 5,185 Записей в блоге: 78 |
||||
03.03.2015, 21:24 |
4 |
|||
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
03.03.2015, 21:34 |
5 |
Прикольная тема
1 |
Catstail Модератор 34706 / 19227 / 4039 Регистрация: 12.02.2012 Сообщений: 32,183 Записей в блоге: 13 |
||||||||||||
04.03.2015, 09:39 |
6 |
|||||||||||
В VBA есть по крайней мере три способа узнать размер файла: 1)
2)
3)
Можно еще API использовать…
1 |
This Excel tutorial explains how to use the Excel FILELEN function with syntax and examples.
Description
The Microsoft Excel FILELEN function returns the size of a file in bytes.
The FILELEN function is a built-in function in Excel that is categorized as a File/Directory Function. It can be used as a VBA function (VBA) in Excel. As a VBA function, you can use this function in macro code that is entered through the Microsoft Visual Basic Editor.
Syntax
The syntax for the FILELEN function in Microsoft Excel is:
FileLen( file_path )
Parameters or Arguments
- file_path
- The path to a file name that you wish to retrieve the size for.
Returns
The FILELEN function returns a numeric value in bytes.
Applies To
- Excel for Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 for Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000
Type of Function
- VBA function (VBA)
Example (as VBA Function)
The FILELEN function can only be used in VBA code in Microsoft Excel.
Let’s look at some Excel FILELEN function examples and explore how to use the FILELEN function in Excel VBA code:
FileLen("C:instructions.doc") Result: 55808 FileLen("H:DocumentsSupplies.xls") Result: 1254
For example:
Dim LResult As Long LResult = FileLen("C:instructions.doc")
In this example, the variable called LResult would now contain the size of the instructions.doc file in bytes.
FileLen
FileLen(PathName)
Функция FileLen позволяет узнать длину файла в байтах. Перед вызовом функции есть смысл проверить существование файла с помощью функции Dir. Если в момент вызова фунции указанный файл открыт, то возвращается длина файла до его открытия. Для определения размера открытого файла используйте фукцию LOF
Возвращаемое значение
Возвращает значение типа Long, содержащее длину заданного файла
Параметры
PathName | Обязательный аргумент типа String, содержащий имя файла(может содержать имя диска или папки). Если диск или папка не заданы, по умолчанию принимаются текущие диск и папка. Если файл не существует, генерируется ошибка времени исполнения File not found |
Пример
' Узнаем длину файла autoecex.bat
Print FileLen("c:autoexec.bat")
Категория
Функции работы с файлами
FileLen Function Description
The VBA FileLen function returns the size of a file in bytes. The file size can be returned in kilobytes, megabytes and other similar size units. Scroll down to learn more.
Syntax
The syntax for the FileLen function in VBA is:
FileLen( file_path )
Parameters
file_path
The path to a file name that you wish to retrieve the size for.
Other Notes
The FileLen function returns the size of the file in bytes. If you want the file size to be in:
- Kilobytes (KB) – divide the result by 1024
- Megabytes(KB) – divide the result by 1024^2
- Gigabytes(KB) – divide the result by 1024^3
Example usage
The FileLen function can only be used in VBA code. Let’s look at some FileLen function examples:
FileLen "C:test.txt" 'Result: 500 (bytes) FileLen("C:image.png")/1024 'Result: 25 (kilobytes)
В этом учебном материале вы узнаете, как использовать Excel функцию FILELEN с синтаксисом и примерами.
Описание
Microsoft Excel функция FILELEN возвращает размер файла в байтах.
Функция FILELEN — это встроенная в Excel функция, которая относится к категории функций файлов/каталогов. Её можно использовать как функцию VBA в Excel.
В качестве функции VBA вы можете использовать эту функцию в коде макроса, который вводится через редактор Microsoft Visual Basic Editor.
Синтаксис
Синтаксис функции FILELEN в Microsoft Excel:
FileLen( file_path )
Аргументы или параметры
- file_path
- Путь к имени файла, размер которого вы хотите получить.
Возвращаемое значение
Функция FILELEN возвращает числовое значение в байтах.
Применение
- Excel для Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 для Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000
Тип функции
- Функция VBA
Пример (как функция VBA)
Функцию FILELEN можно использовать только в коде VBA в Microsoft Excel.
Рассмотрим несколько примеров функции Excel FILELEN, чтобы понять, как использовать Excel функцию FILELEN в коде Excel VBA:
FileLen(«C:test.doc») Результат: 22016 |
Например:
Dim LResult As Long LResult = FileLen(«C:test.doc») |
В этом примере переменная LResult теперь будет содержать размер файла test.doc в байтах.
Свойства файла: вывод информации о файле, доступной для просмотра через контекстное меню любого файла (кнопка «Свойства»), из кода VBA Excel.
Вывод информации о файле
В контекстном меню любого файла есть кнопка «Свойства», при нажатии которой открывается окно с информацией о файле. Эта информация может быть выведена для просмотра с помощью кода VBA Excel.
Получение свойств любого файла программным способом на примере файла "Схема Белоусова.png"
, расположенного в папке "C:UsersEvgeniyDownloads"
:
Sub FileInfo() Dim ns As Object, i As Integer, n As Integer Set ns = CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads») For i = 0 To 303 If ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), i) <> «» Then n = n + 1 Cells(n, 1) = ns.GetDetailsOf(«Схема Белоусова.png«, i) & « = » & ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), i) End If Next Set ns = Nothing End Sub |
Если убрать из кода условие, будут отображены все свойства файла, включая свойства без значений. Общее количество свойств — 304.
Выражение
CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads«) |
возвращает ссылку на объект Folder для указанной папки («C:UsersEvgeniyDownloads»).
Выражение
ns.GetDetailsOf(«Схема Белоусова.png», i) |
возвращает наименование свойства указанного файла («Схема Белоусова.png») под номером i.
Выражение
ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png»), i) |
возвращает значение свойства указанного файла («Схема Белоусова.png») под номером i.
Ширина и высота изображения
Извлечение отдельных свойств файла рассмотрим на примере ширины и высоты изображения. Вывести значение свойства можно по его наименованию или порядковому номеру (индексу).
Определяем индексы ширины и высоты в списке свойств изображения:
Sub TestWidthHeight() Dim ns As Object, i As Integer Set ns = CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads») For i = 0 To 303 If ns.GetDetailsOf(«Схема Белоусова.png«, i) = «Ширина» Or ns.GetDetailsOf(«Схема Белоусова.png«, i) = «Высота» Then Debug.Print ns.GetDetailsOf(«Схема Белоусова.png«, i) & « = » & ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), i) & «, Id = « & i End If Next Set ns = Nothing End Sub |
Результат работы кода:
Чтобы можно было присвоить значения ширины и высоты числовым переменным, необходимо убрать непечатные символы перед числами и отбросить текстовые части:
Sub ImageWidthHeight() Dim ns As Object, myWidth As Integer, myHeight As Integer Set ns = CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads») myWidth = Val(Mid(ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), 167), 2)) myHeight = Val(Mid(ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), 169), 2)) Set ns = Nothing Debug.Print myWidth Debug.Print myHeight End Sub |
Применение свойств файла
Представленный ниже код VBA Excel выполняет следующие операции:
- присваивает числовым переменным myWidth и myHeight значения ширины и высоты, извлеченные из информации о файле изображения;
- задает ширине и высоте фигуры на рабочем листе размеры изображения;
- добавляет фигуре ссылку на фоновое изображение.
Sub Primer() Dim ns As Object, myWidth As Integer, myHeight As Integer Set ns = CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads») myWidth = Val(Mid(ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), 167), 2)) myHeight = Val(Mid(ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), 169), 2)) Set ns = Nothing Dim myShap As Shape Set myShap = ActiveSheet.Shapes(«Блок—схема: процесс 9«) With myShap .Width = myWidth .Height = myHeight .Fill.UserPicture «C:UsersEvgeniyDownloadsСхема Белоусова.png« End With End Sub |
Фразы для контекстного поиска: информация о файле.
Здравствуйте уважаемые форумчане. |
|
Set FSO = CreateObject(«Scripting.FileSystemObject») |
|
Юрий М Модератор Сообщений: 60575 Контакты см. в профиле |
Ещё: |
Сергей125 Гость |
#4 10.02.2011 21:41:25 Ух, друзья, столько информации и в такие короткие сроки, Спасибо Вам. Думаю дальше уже сам разберусь. |