这里使用了vba如下两个对象:
Microsoft.XMLHTTP
:文件读写,可读写二进制,可指定编码,对于utf-8编码文本文件使用FSO的TextStream对象打开,读取到的内容可能会出现乱码,可以使用该对象打开;前期绑定添加引用:Microsoft ActiveX Data Objects 2.8
Microsoft.XMLHTTP
:发送请求并获得返回,前期绑定添加:Microsoft XML v6.0
下载案例如下:下载火影忍者的图片到当前工作簿目录下
图片链接为:https://i0.hdslb.com/bfs/article/cb84523da172b11eb6222eb12f3c1737953f0359.jpg
Sub photo_download()
' 下载图片
Dim X As Object
Dim ASTeam As Object
Dim content() As Byte
Set X = CreateObject("Microsoft.XMLHTTP")
Set ASTeam = CreateObject("ADODB.Stream")
With X
.Open "get", "https://i0.hdslb.com/bfs/article/cb84523da172b11eb6222eb12f3c1737953f0359.jpg", False
.send
Do Until .readystate = 4
DoEvents
Loop
content = .responsebody ' 请求返回对象
End With
With ASTeam
.Type = 1 ' 二进制类型
.Mode = 3 ' 可读可写
.Open '打开文件
.write content ' 文件写入
.savetofile ThisWorkbook.Path & "/火影忍者.jpg" ' 文件另存
.Close ' 关闭
End With
MsgBox "download done"
End Sub
关于ADODB.Stream
的几个属性说明:
- Type属性:读写文本文件用adTypeText(2),读写二进制文件用adTypeBinary(1)。
- Mode属性:使用adModeReadWrite(3),可读写。
- CharSet属性:指定文件编码,要根据文本文件的编码来设定。比如
utf-8
如果使用后期绑定的方式,该属性只能通过枚举常量的等价数字定义,比如type的2表示读写文本文件
ADODB.Stream
文本几个方法:LoadFromFile
:加载文本文件ReadText
:读取,ReadText(10)表示读取10个字符,不带数字表示读取文本剩余所有内容:ReadAllclose
:同二进制文件,表示关闭对象,读写后关闭WriteText
:写入记录行,chr(10)
表示换行SaveToFile
:保存为文本文件文章来源:https://www.toymoban.com/news/detail-595527.html
文件读写样例文章来源地址https://www.toymoban.com/news/detail-595527.html
Sub file_read_write()
' 文本读写案例
' Dim ASteam As ADODB.Stream ' 前期引用绑定,直接声明对象即可
Dim ASteam As Object
dim txt_path,s1,s2 as String
Set ASteam = CreateObject("ADODB.Stream") ' 创建对象
txt_path = ThisWorkbook.Path & "/文本文件.txt" ' 文本文件路径
With ASteam
' 文件写入
.Type = 2 ' adTypeText ' 指定类型
.Mode = 3 ' adModeReadWrite ' 可读写
.Charset = "utf-8" ' 指定编码格式
.Open ' 打开
.WriteText "写入一行数据"
.WriteText Chr(10) ' 写入换行符
.WriteText "写入第二行数据"
.SaveToFile txt_path, adSaveCreateOverWrite ' 文件如果存在则覆盖
' 文件读取
.LoadFromFile (txt_path)
s1 = .ReadText(3)
s2 = .ReadText
Debug.Print s1, s2
.Close
End With
End Sub
到了这里,关于VBA下载二进制文件,文本读写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!