VBA生成或读取指定字符集的文本文件

简介: 用VBA做工具的过程中,遇见这样一个问题。使用FSO方式或者直接OPEN文件方式,生成的文本文件采用的字符集为当前操作系统默认字符集,不能选择字符集类型。这样的文件作为应用程序的配置文件或者作为js代码文件,常常会因为字符集不是UTF-8,不能直接使用,需要利用记事本进行一次人工的字符集转换。
用VBA做工具的过程中,遇见这样一个问题。使用FSO方式或者直接OPEN文件方式,生成的文本文件采用的字符集为当前操作系统默认字符集,不能选择字符集类型。这样的文件作为应用程序的配置文件或者作为js代码文件,常常会因为字符集不是UTF-8,不能直接使用,需要利用记事本进行一次人工的字符集转换。特别麻烦。

近日发现有一办法,可以较好的解决这个问题。即是采用ADO的方式,将字符串生成以指定字符集的流文件输出。
函数代码如下,VB或VBA中均可用。 注意:需要添加对ADO 对象库的引用。

ADO方式写入
' 功能:text保存为文件(ADO方式)
'
输入:输出文件地址、内容文本、字符集
'
输出:无
Sub  WriteToTextFileADO(filePath  As   String , strContent  As   String , CharSet  As   String )
    
Set  stm  =   New  ADODB.Stream
    stm.Type 
=   2   ' 以本模式读取
    stm.Mode  =   3
    stm.CharSet 
=  CharSet
    stm.Open
    stm.WriteText strContent
    
' 如果文件存在,删除文件
     If   Len (Dir(filePath))  >   0   Then
        Kill filePath
    
End   If
    stm.SaveToFile filePath, 
2
    stm.Flush
    stm.Close
    
Set  stm  =   Nothing
End Sub

使用示例:
Call  WriteToTextFileADO(Sheets( " channel-list " ).Cells( 3 5 &   " \ "   &  feedName  &   " .xml " , feedXml,  " utf-8 " )

ADO方式读取

' 功能:读取text文件(ADO方式)
'
输入:输入文件地址、字符集
'
输出:无
Function  ReadFromFileADO(filePath  As   String , CharSet  As   String As   String
    
Dim  strRtn  As   String
    
Set  stm  =   New  ADODB.Stream
    stm.Type 
=   2   ' 以本模式读取
    stm.Mode  =   3
    stm.CharSet 
=  CharSet
    stm.Open
    stm.LoadFromFile filePath
    strRtn 
=  stm.ReadText
    stm.Close
    
Set  stm  =   Nothing
    ReadFromFileADO 
=  strRtn
End Function
目录
相关文章
|
3月前
|
人工智能 弹性计算 安全
OpenClaw是什么?基础定义+功能场景+部署教程详细解读!
OpenClaw 是一款开源的、可自托管的 AI 智能体(Agent)平台,它让大语言模型(LLM)不再局限于对话框内的文字输出,而是能够直接操作你的电脑系统、执行真实世界任务。因其图标酷似龙虾,也被社区昵称为“龙虾助手”。
2414 125
|
10月前
|
Web App开发 Ubuntu Linux
Ubuntu 24.04 LTS 发行版首个维护更新发布,改善装机体验
Ubuntu 24.04.1 LTS 预装了 Linux 6.8.x 内核,与四月份发布的 Ubuntu 24.04 LTS ISO 中的版本相同。 Ubuntu 24.04.2 将于明年与 Ubuntu 24.10 的 HWE 一起发布。Ubuntu 24.04 的现有用户将通过软件更新获得 HWE 栈,因此无需重新安装。
|
9月前
|
存储 监控 安全
RFID电动车车牌让出行更安全
RFID电动车车牌通过内置芯片实现车辆身份唯一识别,结合物联网技术,提升防盗、交通秩序、事故处理等多方面的出行安全,助力城市电动车智能化管理,守护市民安全出行。
|
人工智能 搜索推荐
AI视频技术的发展是否会影响原创内容的价值
AI视频技术的发展显著降低了视频制作的门槛与成本,自动完成剪辑、特效添加等繁琐工作,大大缩短创作时间。它提供个性化创意建议,帮助创作者突破传统思维,拓展创意边界。此外,AI技术使更多非专业人士也能参与视频创作,注入新活力与多样性,丰富了原创内容。总体而言,AI视频技术不仅提升了创作效率,还促进了视频内容的创新与多样化。
|
存储 数据采集 分布式计算
别光堆数据,架构才是大数据的灵魂!
别光堆数据,架构才是大数据的灵魂!
386 13
|
C++ 开发者
C++课程设计:图书管理系统【附源码】
图书管理系统,C++ 实现,附全套源码
5864 2
C++课程设计:图书管理系统【附源码】
|
缓存 监控 Ubuntu
Linux Command BCC 性能监视、网络动态跟踪工具
Linux Command BCC 性能监视、网络动态跟踪工具
在Spring Boot中使用AOP实现日志切面
在Spring Boot中使用AOP实现日志切面

热门文章

最新文章