Vba excel размер файла

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

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте,нашел такой код только он чёт не правельно работает, подскажите пожалуйста

Visual Basic
1
2
3
4
5
6
 If (f.Size < 20000) Then
            MsgBox (123)
            End If
        MsgBox (321)
        
        End Sub

когда размер файла меньше 20к байт выдаёт MsgBox (123) и MsgBox (321) а когда больше только MsgBox (321)



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

03.03.2015, 17:49

2

Лучший ответ Сообщение было отмечено DarkJoker1992 как решение

Решение

Visual Basic
1
2
3
4
5
6
7
If (f.Size < 20000) Then
            MsgBox (123)
Else
        MsgBox (321)
            End If
        
        End Sub



1



Hugo121

6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

03.03.2015, 21:13

3

Visual Basic
1
2
3
4
5
6
If (f.Size < 20000) Then MsgBox (123):exit sub
 
        MsgBox (321)
 
        
        End Sub



0



The trick

Модератор

9167 / 3405 / 853

Регистрация: 22.02.2013

Сообщений: 5,185

Записей в блоге: 78

03.03.2015, 21:24

4

Visual Basic
1
2
3
MsgBox IIf(f.Size < 20000, 123, 321)
' Для данного, конкретного случая
MsgBox 123 - (f.Size < 20000) * 198



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

03.03.2015, 21:34

5

Прикольная тема
Титульный вопрос с темой вообще не связан, какой нужен ответ — тоже не сказано…



1



Catstail

Модератор

Эксперт функциональных языков программированияЭксперт Python

34706 / 19227 / 4039

Регистрация: 12.02.2012

Сообщений: 32,183

Записей в блоге: 13

04.03.2015, 09:39

6

В VBA есть по крайней мере три способа узнать размер файла:

1)

Visual Basic
1
      sz&=FileLen("Имя_файла")

2)

Visual Basic
1
2
3
4
     fi%=freeFile
     open "Имя_файла" for binary access read as #fi%
     sz&=LOF(fi%)
     Close #fi%

3)

Visual Basic
1
2
3
   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set File = FSO.GetFile("Имя_файла")
   sz&=Clng(File.Zize)

Можно еще API использовать…



1



totn Excel Functions


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


Фразы для контекстного поиска: информация о файле.


 

Здравствуйте уважаемые форумчане.    
Скажите пожалуйста, у меня такой вопрос, например есть код который считывает из закрытой книги с определенных ячеек данные. Процесс реализован с помощью формы, по нажатии на кнопку открыть, выбираешь путь к файлу, и уже из этого файла в форму вставляются искомые значения. Существует ли код, с помощью которого можно было бы проверить какой размер имеет тот документ из которого нужно получить значения? Тоесть,    
Если Документ С:1.xls размер его 100kb То  
msgbox «OK»  
Else  
msgbox «Великовато будет»  
Конец Если  
Если можете подскажите пожалуйста как реализовать задуманное?  
Спасибо.

 

Set FSO = CreateObject(«Scripting.FileSystemObject»)  
Set File = FSO.GetFile(«C:autoexec.bat»)  
Str = vbNullString  
Str = Str & «Дата создания — » & File.DateCreated & vbCrLf  
Str = Str & «Дата последнего доступа — » & File.DateLastAccessed & vbCrLf  
Str = Str & «Дата последней модификации — » & File.DateLastModified & vbCrLf  
Str = Str & «Диск — » & File.Drive.DriveLetter & vbCrLf  
Str = Str & «Имя — » & File.Name & vbCrLf  
Str = Str & «Родительский каталог — » & File.ParentFolder.Path & vbCrLf  
Str = Str & «Путь — » & File.Path & vbCrLf  
Str = Str & «Короткое имя — » & File.ShortName & vbCrLf  
Str = Str & «Путь в формате 8.3 — » & File.ShortPath & vbCrLf  
Str = Str & «Размер — » & File.Size & vbCrLf  
Str = Str & «Тип файла — » & File.Type  
MsgBox Str

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

Ещё:  
Sub qqq()  
iFullName = «C:TempTest.xls»  
iFileSize = FileLen(iFullName)  
MsgBox «Размер файла составляет : » & iFileSize & » байт», , «»  
End Sub

 

Сергей125

Гость

#4

10.02.2011 21:41:25

Ух, друзья, столько информации и в такие короткие сроки, Спасибо Вам. Думаю дальше уже сам разберусь.  
Спасибо!

Like this post? Please share to your friends:
  • Vba excel свойства листа в excel
  • Vba excel работа строка
  • Vba excel свой тип данных
  • Vba excel работа с ячейками объединенный
  • Vba excel сводная таблица макрос