ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 896|回复: 1

[求助] 使用vb写入文件名和文件内容,结果文件内容写入乱码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-3-1 15:51 | 显示全部楼层 |阅读模式


Sub 导入txt文件名及文本内容()

Dim t As Date
Dim r As Long

Dim Fso As Object
Dim myFile As Object
Dim mySheet As Worksheet
Dim txtFolder As Object

t = Timer
r = 2

Set txtFolder = CreateObject("Shell.Application").BrowseForFolder(0, "请选择txt所在文件夹:", 0, ThisWorkbook.Path) '选择文件夹,根目录为本工作簿所在文件夹

If txtFolder Is Nothing Then Exit Sub '未选择文件夹则退出

Set Fso = CreateObject("Scripting.FileSystemObject") '引用fso对象
Set mySheet = ThisWorkbook.Sheets("sheet1") '设置汇总表

Application.ScreenUpdating = False '关闭屏幕刷新

'__________汇总表初始化______________________________
mySheet.Cells.Clear
mySheet.[A1:B1].Value = Array("文件名", "文本内容")
'____________________________________________________

For Each myFile In Fso.getfolder(txtFolder.Self.Path).Files
    If Fso.GetExtensionName(myFile) = "txt" Then '判断拓展名
        mySheet.Cells(r, 1).Value = myFile.Name '写入文件名
        mySheet.Cells(r, 2).Value = Fso.OpenTextFile(myFile).ReadAll '写入文本
        r = r + 1
    End If
Next myFile

Application.ScreenUpdating = True '恢复屏幕刷新

Set mySheet = Nothing
Set Fso = Nothing
Set txtFolder = Nothing

MsgBox "结束,共运行" & Format((Timer - t), "0.0") & "秒"

End Sub
这是我在知乎找到的一段代码,我手贱提前把txt文件的代码改成utf8的,结果导入以后都是乱码。请问可以修改以上的代码,让代码支持utf8的格式吗?

TA的精华主题

TA的得分主题

发表于 2020-3-1 21:15 | 显示全部楼层
本帖最后由 lss001 于 2020-3-1 21:18 编辑

Sub 导入txt文件名及文本内容()
    Dim t As Date, r As Long, Fso As Object, myFile As Object
    Dim mySheet As Worksheet, txtFolder As Object
    t = Timer: r = 2
    '__________选择文件夹,根目录为本工作簿所在文件夹______
    Set txtFolder = CreateObject("Shell.Application").BrowseForFolder _
        (0, "请选择txt所在文件夹:", 0, ThisWorkbook.Path)
    If txtFolder Is Nothing Then Exit Sub '未选择文件夹则退出
    Set Fso = CreateObject("Scripting.FileSystemObject") '引用fso对象
    Set mySheet = ThisWorkbook.Sheets("sheet1") '设置汇总表
    Application.ScreenUpdating = False '关闭屏幕刷新
    '__________汇总表初始化______________________________
    mySheet.Cells.Clear
    mySheet.[A1:B1].Value = Array("文件名", "文本内容")
    '___________________________________________________
    Set ad = CreateObject("Adodb.Stream")
    For Each myFile In Fso.getfolder(txtFolder.Self.Path).Files
        If Fso.GetExtensionName(myFile) = "txt" Then '判断拓展名
            mySheet.Cells(r, 1).Value = myFile.Name '写入文件名
            With ad
                .Charset = "utf-8"
                .Open
                .LoadFromFile myFile
                st = .ReadText()
                .Close
            End With
            mySheet.Cells(r, 2).Value = st '写入文本
            r = r + 1
        End If
    Next myFile
    Application.ScreenUpdating = True '恢复屏幕刷新
    Set mySheet = Nothing
    Set Fso = Nothing
    Set txtFolder = Nothing
    MsgBox "结束,共运行" & Format((Timer - t), "0.0") & "秒"
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 15:44 , Processed in 0.032131 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表