ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决]VBA更改txt文件“编码格式”为UTF-8?18楼附答谢文件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-11-7 01:11 | 显示全部楼层 |阅读模式
各位达人,小生这厢有礼了先
 
我在excel中,需要使用VBA输出一些数据文件,代码如下:
    Dim i%, irow%
    Dim T As String
    FullName = "d:\dbf\output.txt"
    Open FullName For Append As #1
    For i = 1 To a
     Print #1, Cells(i, 14)
    Next i
    Close #1
 
但是,这样输出的文件,其编码方式是ANSI的[em11]
请问:如何定义这段代码,使之输出的output.txt文件为UTF-8编码方式呢?
看了半天帮助文件,也试了半天了,还是没明白“msoEncodingUTF8”该怎么用[em06]
还望各位达人不吝赐教
[此贴子已经被作者于2006-11-8 0:47:21编辑过]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-7 08:34 | 显示全部楼层
下面是我用来实现由VBA输出特定文件名的文本文件的程序代码
这个msoEncodingUTF8到底应该加在Open那一行的哪个位置啊?
高亮的那一行在VBA里运行不会报错,但是也没有效果[em06]
 
 
Private Sub CommandButton1_Click()
   Application.ScreenUpdating = False
           For ii = 3 To 5000
            Cells(ii, 14).Select
            If ActiveCell.Value <> "" Then
               a = ii
            End If
          Next ii
    Dim i%, irow%
    Dim T As String
    FullName = "d:\dbf\" & Cells(1, 1)
    Open FullName For Append As #1
    FullName.msoEncodingUTF8
    For i = 1 To a
     Print #1, Cells(i, 14)
    Next i
    Close #1
Application.ScreenUpdating = ture
Range("B2").Select
End Sub
[此贴子已经被作者于2006-11-7 8:45:46编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-7 10:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
没有人知道么?还是不屑于回答这样的菜鸟问题?很急的说[em11]
 
偶已经尝试过很多种方法了,还是不得其门而入[em06]
[此贴子已经被作者于2006-11-7 10:45:12编辑过]

TA的精华主题

TA的得分主题

发表于 2006-11-7 11:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Application.DefaultWebOptions.Encoding = msoEncodingUTF8

TA的精华主题

TA的得分主题

发表于 2006-11-7 11:28 | 显示全部楼层

試試 轉化 UTF-8

Private Function GetUTF8String(s As String) As String
    Dim i As Integer
    Dim utf16 As Long, uc(2) As Byte
   
    GetUTF8String = ""
    For i = 1 To Len(s)
        utf16 = AscW(Mid(s, i, 1))
        If utf16 < 0 Then utf16 = utf16 + 65536
        If utf16 < &H80 Then ' 1 Byte
            GetUTF8String = GetUTF8String & Chr(utf16)
        ElseIf utf16 < &H800 Then ' 2 Byte
            uc(1) = &H80 + (utf16 And &H3F) ' Least Significant 6 bits
            utf16 = utf16 \ &H40 ' Shift UTF16 number right 6 bits
            uc(0) = &HC0 + (utf16 And &H1F) ' Use 5 remaining bits
            GetUTF8String = GetUTF8String & Chr(uc(0)) & Chr(uc(1))
        Else ' 3 Byte
            uc(2) = &H80 + (utf16 And &H3F) ' Least Significant 6 bits
            utf16 = utf16 \ &H40 ' Shift UTF16 number right 6 bits
            uc(1) = &H80 + (utf16 And &H3F) ' Use next 6 bits
            utf16 = utf16 \ &H40 ' Shift UTF16 number right 6 bits again
            uc(0) = &HE0 + (utf16 And &HF) ' Use 4 remaining bits
            GetUTF8String = GetUTF8String & Chr(uc(0)) & Chr(uc(1)) & Chr(uc(2))
        End If
    Next
End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-7 12:37 | 显示全部楼层
报告北狼版主,在第2楼贴出的代码中使用您提供的
Application.DefaultWebOptions.Encoding = msoEncodingUTF8
去替换
   FullName.msoEncodingUTF8 
后还是不行,输出的txt文件还是使用的ANSI编码[em11]
有朋友提醒我:应该先将文件的属性定义好,(包括编码方式)
然后再使用VBA语句往里面写数据
偶在VBA方面实在是菜菜,不知如何下手
 
 
lotustower贴出的代码貌似跟我遇到的问题无关[em11]
[此贴子已经被作者于2006-11-7 12:54:01编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-7 15:49 | 显示全部楼层
Private Sub Command1_Click()
  Dim wordapp As Variant
  Dim worddoc As Variant
  Dim filepath As String
  filepath = "c:"
  Set wordapp = CreateObject("word.Application") 
     Set worddoc = wordapp.documents.open(filepath + "\aa.doc", False)                          
  wordapp.Visible = False
  worddoc.SaveAs filepath + "\" + "attach.txt", wdSaveFormat.wdFormatEncodedText, Encoding:=msoencoding.msoEncodingUTF8
   wordapp.Quit
End
上面这一段代码是我的一个朋友给的VBA for word中的代码
可是,我怎样整合到excelVBA中呢?

[此贴子已经被作者于2006-11-7 15:51:31编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-7 18:10 | 显示全部楼层
还是复杂问题简单化吧:
已经使用excelVBA创建了一个文件"d:\mydata.txt"
但是这个文件是使用ANSI编码的
我需要将其改变成为使用UTF8编码的文件,文件名、内容都不变
请问如何写VBA代码?

TA的精华主题

TA的得分主题

发表于 2006-11-7 21:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-7 22:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢斑竹
您提供的程序在运行时
提示:编译错误:用户定义类型未定义
同时VBE高亮了这一行
        Dim   Stm   As   New   ADODB.Stream
高亮未包括前面的Dim
请问为何?
我现在使用的Windows2003 + SP1
Office2003 SP2
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 17:00 , Processed in 0.046719 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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