Set fso = CreateObject("Scripting.FileSystemObject")
Set fold = fso.GetFolder("\\DAS-001961\PREZENT")
MsgBox fold.Size
Set fso = Nothing
Set fold = Nothing
Узнать объем файлов
Как в макросе Excel зайти в папку на сервере и узнать объем файлов только с одним или двумя расширениями???:(
есть такая функция FileLen вот ее и используй
Спасибо
А как к папке подключится???
А тебе имя сервака известно?
Вот код, который выводит объем всей папки, а мне нужны, только файлы с расширением *.dbf, *.ntx
Код:
а точно так-же как ты в этом скипте делаешь, кстати это не похоже на макрос excel
А что это???Вообще-то это макрос...
Код:
For Each curFile In fold.Files
curName = curFile.Name
If StrComp(Right(curName, 3), "dbf", vbTextCompare) = 0 Or _
StrComp(Right(curName, 3), "ntx", vbTextCompare) = 0 Then
MsgBox curFile.Name & vbCr & curFile.Size
End If
Next curFile
curName = curFile.Name
If StrComp(Right(curName, 3), "dbf", vbTextCompare) = 0 Or _
StrComp(Right(curName, 3), "ntx", vbTextCompare) = 0 Then
MsgBox curFile.Name & vbCr & curFile.Size
End If
Next curFile
Код:
For Each curFile In fold.Files
curName = curFile.Name
If StrComp(Right(curName, 3), "dbf", vbTextCompare) = 0 Or _
StrComp(Right(curName, 3), "ntx", vbTextCompare) = 0 Then
MsgBox curFile.Name & vbCr & curFile.Size
End If
Next curFile
curName = curFile.Name
If StrComp(Right(curName, 3), "dbf", vbTextCompare) = 0 Or _
StrComp(Right(curName, 3), "ntx", vbTextCompare) = 0 Then
MsgBox curFile.Name & vbCr & curFile.Size
End If
Next curFile
или так
Код:
For Each curFile In fold.Files
If fso.GetExtensionName(curFile) = "dbf" Or _
fso.GetExtensionName(curFile) = "ntx" Then _
MsgBox curFile.Name & vbCr & curFile.Size / 1024
Next curFile
If fso.GetExtensionName(curFile) = "dbf" Or _
fso.GetExtensionName(curFile) = "ntx" Then _
MsgBox curFile.Name & vbCr & curFile.Size / 1024
Next curFile
Спасибо всем!!!:D
Код:
dim s as string
dim x as variant
For Each curFile In fold.Files
s = ucase(GetExtensionName(curFile))
If s = "DBF" Or s = "NTX" Then x = x + curFile.Size
Next
debug.print x/1024
dim x as variant
For Each curFile In fold.Files
s = ucase(GetExtensionName(curFile))
If s = "DBF" Or s = "NTX" Then x = x + curFile.Size
Next
debug.print x/1024
Иначе возможны коллизии.
Код:
Dim s As String
Dim x As Variant
For Each curFile In fold.Files
s = UCase(GetExtensionName(curFile))
If s = "DBF" Or s = "NTX" Then x = x + curFile.Size
Next
Debug.Print x / 1024
Dim x As Variant
For Each curFile In fold.Files
s = UCase(GetExtensionName(curFile))
If s = "DBF" Or s = "NTX" Then x = x + curFile.Size
Next
Debug.Print x / 1024
К этому: \\DAS-001961\PREZENT ?
Если - "да", то нигде не надо. Достаточно вставить любой из предложенных Вам вариантов между строками:
Set fold = fso.GetFolder("\\DAS-001961\PREZENT")
и
Set fso = Nothing
Вашего исходного фрагмента.
Переменная fold уже ссылается на интересующий Вас каталог.
Благодарю!!! =)
Dim x As Variant
Почему он ругается на эти сточки, может чего с библиотеками????
Почему не пойму???
Код:
Set fold = fso.GetFolder("\\DAS-001961\PREZENT")
' Dim s As String
' Dim x
' For Each curFile In fold.Files
' s = UCase(GetExtensionName(curFile))
' If s = "DBF" Or s = "NTX" Then x = x + curFile.Size
' Next
'
' Debug.Print x / 1024
For Each curFile In fold.Files
If fso.GetExtensionName(curFile) = "dbf" Or _
fso.GetExtensionName(curFile) = "ntx" Then _
Debug.Print curFile.Name & vbCr & curFile.Size / 1024
Next curFile
Set fso = Nothing
' Dim s As String
' Dim x
' For Each curFile In fold.Files
' s = UCase(GetExtensionName(curFile))
' If s = "DBF" Or s = "NTX" Then x = x + curFile.Size
' Next
'
' Debug.Print x / 1024
For Each curFile In fold.Files
If fso.GetExtensionName(curFile) = "dbf" Or _
fso.GetExtensionName(curFile) = "ntx" Then _
Debug.Print curFile.Name & vbCr & curFile.Size / 1024
Next curFile
Set fso = Nothing
fso надо создать перед использованием.
Он не выводит в таблицу данные этой папки
Вместо debug поставил:
Workbooks("Книга1.xls").Worksheets("Лист1").Range("A5").Value = curFile.Name & vbCr & curFile.Size / 1024
Вы б хоть выкладывали что пишет VBA. "Очень трудно в язык проникать..." (с) Би
Он ничего не пишет просто не выводит ни в Debug.Print ни в таблицу!!!!!
Почему не пойму???[/QUOTE]
Потому что надо так:
[color=blue]s = UCase(fso.GetExtensionName(curFile))[/color]
[QUOTE=Urfen_Djus]Он не выводит в таблицу данные этой папки
Вместо debug поставил:
Workbooks("Книга1.xls").Worksheets("Лист1").Range( "A5").Value = curFile.Name & vbCr & curFile.Size / 1024[/QUOTE]
Потому что Вы пытаетесь все результаты поместить в одну и ту же ячейку (Range( "A5").Value), а не в таблицу.
Ниже - пример вполне рабочего кода для Вашей задачи (разумеется, лишь в тех рамках, в которых Вы её описали).
Код:
Sub Example()
Dim s As String
Dim fso As Object, fold As Object, curFile As Object
On Error GoTo ErrCase
Set fso = CreateObject("Scripting.FileSystemObject")
Set fold = fso.GetFolder("\\DAS-001961\PREZENT")
i = 1
For Each curFile In fold.Files
s = UCase(fso.GetExtensionName(curFile))
If s = "DBF" Or s = "NTX" Then
With Workbooks("Книга1.xls").Worksheets("Лист1")
.Cells(i, 1).Value = curFile.Name
.Cells(i, 2).Value = curFile.Size / 1024
End With
i = i + 1
End If
Next curFile
Set fold = Nothing
Set fso = Nothing
MsgBox "Готово", vbInformation
Exit Sub
ErrCase:
MsgBox "Код: " & Err.Number & vbCr & "Описание: " & Err.Description, vbCritical, "Ошибка"
End Sub
Dim s As String
Dim fso As Object, fold As Object, curFile As Object
On Error GoTo ErrCase
Set fso = CreateObject("Scripting.FileSystemObject")
Set fold = fso.GetFolder("\\DAS-001961\PREZENT")
i = 1
For Each curFile In fold.Files
s = UCase(fso.GetExtensionName(curFile))
If s = "DBF" Or s = "NTX" Then
With Workbooks("Книга1.xls").Worksheets("Лист1")
.Cells(i, 1).Value = curFile.Name
.Cells(i, 2).Value = curFile.Size / 1024
End With
i = i + 1
End If
Next curFile
Set fold = Nothing
Set fso = Nothing
MsgBox "Готово", vbInformation
Exit Sub
ErrCase:
MsgBox "Код: " & Err.Number & vbCr & "Описание: " & Err.Description, vbCritical, "Ошибка"
End Sub
Спасибо!!!Просто в ячеку А5 он бы вводил, просто заменяя предыдущие данные =)))И все равно спасибо!!!