У меня есть лист с большим количеством данных в одной ячейке и URL-адреса документов в следующей ячейке. Я хочу получить размер документа. Возможно ли это в Excel?

Например:

--------------------------------------------
| Cell A                      | Cell B     |
|------------------------------------------|
| http://m---.com/myfile.txt  |   4kbs     |
|------------------------------------------|
| http://m---.com/myfile.txt  |   10kbs    |
|------------------------------------------|
| http://m---.com/myfile.doc  |  104kbs    |
|------------------------------------------|
| http://m---.com/myfile.jpg  |   102kbs   |
|------------------------------------------|

У меня просто есть списки URL в столбце A и я хочу иметь размер файла в столбце B

Я пробовал код VBA для этого, но он не работает. Еще одна вещь, я только что получил этот код из Интернета, и он не мой, но он не работал. Вот код:

print file path Cells(i + 1, 1) = objFile.Path 'print size Cells(i + 1, 2) = objFile.Size

1 ответ1

2

Вставьте этот код в новый модуль в файле Excel и запустите функцию Tester чтобы проверить его.

Для тестирования замените URL-адрес в функции Tester собственным URL-адресом для тестирования.

Sub Tester()
MsgBox FileSize("https://www.google.com/images/logo.png")
End Sub

Function FileSize(sURL As String)
Dim oXHTTP As Object
Set oXHTTP = CreateObject("MSXML2.XMLHTTP")
oXHTTP.Open "HEAD", sURL, False
oXHTTP.send
If oXHTTP.Status = 200 Then
FileSize = oXHTTP.getResponseHeader("Content-Length")
Else
FileSize = -1
End If
End Function

Как только это будет вставлено в модуль в вашем файле Excel, вы можете использовать его через VBA, как показано в функции Tester или вы можете использовать его, как показано ниже:

Если столбец A содержит все URL-адреса и вы хотите отобразить размер файла в столбце B , введите его в ячейку B1 и перетащите его вниз:

=FileSize(A1)

Выше приведен размер файла в байтах. Если вы хотите отобразить размер файла в килобайтах, округленный до 2 десятичных знаков, и рядом с номером отображается "КБ", вы можете обновить следующую строку кода:

FileSize = oXHTTP.getResponseHeader("Content-Length")

на новый ниже:

FileSize = CStr(Round(oXHTTP.getResponseHeader("Content-Length") / 1024, 2)) + " KB"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .