ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 用宏生成UTF-8编码的TXT文件的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-10-19 21:49 | 显示全部楼层 |阅读模式
本帖最后由 豳嘫 于 2011-10-20 10:06 编辑

    大家好!我用宏将表格内的数据导出为TXT文本,但是导出来的文本是ANSI编码的,我现在需要的文本是UTF-8编码的,谁能教教我如何能使导出来的文本为UTF-8编码;
    我的宏代码如下:
Sub write_txt()
Open ThisWorkbook.Path & "\" & Split(ThisWorkbook.Name, ".")(0) & ".txt" For Output As #1 '打开文本文件,存放位置改为你需要的
Row = 3 '开始行数控制
While Cells(Row, 2).Value > 0
    col = 2
    For col = 2 To 8  '8为结束列数
    Print #1, Cells(Row, col).Value;
    Print #1, ""; '后跟分号,数据紧随
    Next col
    Print #1, '数据换行
    Row = Row + 1
    Wend
    Close #1
    MsgBox "数据导出完毕"
End Sub
    这个代码己经能正确导出我需要的东西了,只是导出来的文本不是UTF-8编码,谁能帮我改一下代码,使得导出来的文件是UTF-8编码的??另外附上我的表格,请高手帮看看,我试了好久了,弄不出来
    如果不是很容易讲清楚的话还请麻烦你联系我Q:295954203

TA的精华主题

TA的得分主题

发表于 2011-10-19 21:58 | 显示全部楼层
直接另存为unicode不就行了?

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-19 22:24 | 显示全部楼层
另存是一种方法,但是因为我要频繁的使用,所以想要一步到位,每都去另存的话降低效率了

TA的精华主题

TA的得分主题

发表于 2011-10-19 22:47 | 显示全部楼层
本帖最后由 baomaboy 于 2011-10-20 11:15 编辑
豳嘫 发表于 2011-10-19 22:24
另存是一种方法,但是因为我要频繁的使用,所以想要一步到位,每都去另存的话降低效率了


好像没看到Open可以设置保存格式,非要用open的话要“中转”,那就不如直接用FileSystemObject 对象或者数据流处理方便了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-19 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
好像没看到Open可以设置保存格式,用FileSystemObject 对象倒是可以。

楼上,那能帮我改过代码么?我不会啊!~

TA的精华主题

TA的得分主题

发表于 2011-10-20 07:55 | 显示全部楼层
本帖最后由 baomaboy 于 2011-10-20 08:02 编辑
豳嘫 发表于 2011-10-19 22:51
楼上,那能帮我改过代码么?我不会啊!~


代码:
Sub CreateAfile()
    Dim fso, MyFile
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set MyFile = fso.CreateTextFile(ThisWorkbook.Path & "\" & Split(ThisWorkbook.Name, ".")(0) & ".txt", True, True)
    Row = 3 '开始行数控制
    While Cells(Row, 2).Value > 0
        strtem = ""
        col = 2
        For col = 2 To 8  '8为结束列数
            '不明白你的“后跟分号,数据紧随”是什么意思?下面提供了两句,根据需要选用吧,都不对可以根据自己需要修改。
            'strtem = strtem & Cells(Row, col).Value
            strtem = strtem & Cells(Row, col).Value & ";"
        Next col
        MyFile.WriteLine (strtem)
        Row = Row + 1
    Wend
    MyFile.Close
    Set fso = Nothing
    MsgBox "数据导出完毕"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-20 10:06 | 显示全部楼层
baomaboy     真是太感谢啦!~困扰我好几天的问题终于得到解决啦!~在此表示万分感谢!~

TA的精华主题

TA的得分主题

发表于 2011-11-16 14:26 | 显示全部楼层
为什么  我照着这个导出来是 unicode  格式的 .

TA的精华主题

TA的得分主题

发表于 2011-11-16 15:00 | 显示全部楼层
本帖最后由 baomaboy 于 2011-11-16 15:02 编辑
kelland120 发表于 2011-11-16 14:26
为什么  我照着这个导出来是 unicode  格式的 .


因为我猜到楼主要的其实就是unicode格式,想要utf-8可以这样:
代码:
Public Declare Function Text2File Lib "LLKJ" (ByVal InPutStr As Variant, ByVal filepath As Variant, Optional op = 0)
Sub CreateAfile()
    Row = 3 '开始行数控制
    strtem = ""
    While Cells(Row, 2).Value > 0
        col = 2
        For col = 2 To 8  '8为结束列数
            strtem = strtem & Cells(Row, col).Value & " "
        Next col
        strtem = strtem & vbCrLf
        Row = Row + 1
    Wend
    Text2File strtem, ThisWorkbook.Path & "\" & Split(ThisWorkbook.Name, ".")(0) & ".txt", 2
    MsgBox "数据导出完毕"
End Sub
QQ截图20111116145845.png

text2file.rar

106.34 KB, 下载次数: 470

TA的精华主题

TA的得分主题

发表于 2011-11-16 15:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
导出文本为UTF-8码是什么效果?

有附件么?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 12:02 , Processed in 0.048552 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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