如何获取 Excel 中文件的大小?

如何获取 Excel 中文件的大小?

我的表格中有一个单元格包含大量数据,而下一个单元格包含文档的 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

将此代码粘贴到 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 位,并在数字旁边显示“KB”,则可以更新以下代码行:

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

到下面的新内容:

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

相关内容