ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

在word环境下如何将ANSI格式的TXT 文档另存为“UNICODE”格式?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-8-3 17:04 | 显示全部楼层 |阅读模式

由于最近在玩Symbian操作系统的智能手机,而如果要在这类手机上看电子书的话,一定要用UNICODE格式。因此,在普通电脑上通用的、用ANSI格式编码的TXT文件必须经过转化后方可在手机上正常显示。

转化其实也不复杂,用WINDOWS下的“记事本”或“写字板”都可以实现转化,参见下图。

 

 

但是对于一个书虫子来说,麻烦就来了,如何将电脑上成百上千的ANSI版TXT文档转化为UNICODE格式呢?用VB来编程的话,还非用SHELL命令进行外部操作不可,这是我不需意见到的,那么是否能用WORD自身强大的VBA来帮忙呢?

很可惜,WORD尽管能出现如下的“文件转换”对话框,但在“另存为”时确米有相应的选项,因此如何用WORD来实现文本文件从ANSI到UNICODE编码的转化,就成了一个比较麻烦的事情,各位高手,你们能解决么?

 

老大,这次的问题其实还是上次俺向你请教的“文件转换”对话框的有关问题。

1、如何用VBA来控制这个对话框?

2、该对话框对应的命令是虾米?


在word环境下如何将ANSI格式的TXT 文档另存为“UNICODE”格式?

在word环境下如何将ANSI格式的TXT 文档另存为“UNICODE”格式?

在word环境下如何将ANSI格式的TXT 文档另存为“UNICODE”格式?

在word环境下如何将ANSI格式的TXT 文档另存为“UNICODE”格式?

在word环境下如何将ANSI格式的TXT 文档另存为“UNICODE”格式?

在word环境下如何将ANSI格式的TXT 文档另存为“UNICODE”格式?

TA的精华主题

TA的得分主题

发表于 2006-8-3 17:46 | 显示全部楼层

请步兵兄试一下编辑/选择性粘贴/粘贴为无格式的UniCode行否?

TA的精华主题

TA的得分主题

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

谢谢老大,方法完全可行,但麻烦在于:这样做之后,在“另存为”时,会出现那个“ 文件转换”对话框了(真是千呼万唤始出来啊),如果不更改一下默认的的设置的话,仍会变为普通的ANSI格式。因此,新的问题又出来了:

1、如何用编程的方法将当前UNICODE格式的文本按照UNICODE方式保存(那个跳出的对话框可还是按常规方式,即ANSI方式保存滴)?

2、该对话框对应哪个VBA工具?我好像一直找不到啊?

老孔和七叶兄,有空的话也帮我找找啊,这个转换器对俺可是太重要了。。。。。。

在word环境下如何将ANSI格式的TXT 文档另存为“UNICODE”格式?

在word环境下如何将ANSI格式的TXT 文档另存为“UNICODE”格式?

TA的精华主题

TA的得分主题

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

我来回答吧:

1:看以下宏

ActiveDocument.SaveAs FileName:="样本1new2.txt", FileFormat:=wdFormatText, _
        LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False, Encoding:=1200, InsertLineBreaks:=False, AllowSubstitutions:=False _
        , LineEnding:=wdCRLF

Encoding:=1200,即Encoding:=msoEncodingUnicodeLittleEndian,它对应于其它编码中的UNICODE格式。

2:我也找不到,你实在需要的话,可以直接使用窗体订制一个,这个对话框中的参数设置请按SAVEAS中的帮助内容。在WORD内置对话框中,我也没有找到该对话框(它是对话框中的对话框,即在另存为对话框之后的子对话框)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-4 10:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

感谢老大,昨天晚上,俺用录制宏的方法也找到类似的结果了。

关于该“文件转换”对话框,试总结如下。

1、由于WORD97、2000与WORDXP、2003本身的差异性,在前者环境下将任意一个TXT文本打开并“另存为”,是不会出现该对话框的。而在后者环境下,是一定会出现该对话框的。因此,对话框的出现与否与TXT文件本身无关,只与OFFICE软件的版本有关(这其实就解决了上回那个贴子中提到的问题)。

2、本次的大问题也给守老大解决了,说白了,这个所谓的“文件转换”对话框与那个“另存为”(主)对话框其实都是针对SAVEAS函数的一部分参数,我要达到批量转换目的,只要用上SAVEAS 的Encoding:=1200 参数即可,根本不必去管那个所谓的“子对话框”。

另外,在昨天的试验中,还有一个问题。就是参照老大的操作步骤,将当前中的文档“全选”-“复制”-“选择性粘贴”,而在“宏”中,不管“选择性粘贴”下用的是“带格式文本”、“无格式文本”还是“无格式的UNICODE文件”,其对应的VBA语句都是“Selection.PasteAndFormat (wdPasteDefault)”,而参考VBA中关于“PasteAndFormat 方法”的帮助中(见下图),在“Type”参数下又没能见到wdPasteDefault。不知该如何理解?是否帮助中有误?

 


[此贴子已经被作者于2006-8-4 10:38:17编辑过]
zgahOGPG.jpg

TA的精华主题

TA的得分主题

发表于 2006-8-4 10:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

先试一下这个行否?

 Selection.PasteSpecial DataType:=wdPasteText

我觉得你已经另存为这种格式的文本了,是否还需要这个步骤?

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-4 11:21 | 显示全部楼层

当然不需要啦,不过是本着“能知多知”的贪婪原则尽可能搞清楚相对应“选择性粘贴”下的那几个不同的内容的VBA命令罢了。(俺很懒,不想看那些厚实的<大全><汇编>,只想跟着高手们学几招自己想学的东东罢了,这叫做“所学即所用”.....)

这不,老大又教会了我一招半式,学会如何用非‘PASTE’的方法来控制剪贴板上的数据了,这个东西对于从网络文件中提取文件名有用(大部分用蚂蚁、快车之类下载的文章都不能正确的显示文件名的,得利用规律让VBA自动去找寻滴),多谢啦。

TA的精华主题

TA的得分主题

发表于 2006-8-10 16:15 | 显示全部楼层

步兄:脚本好像也行。

http://www.microsoft.com/china/technet/community/scriptcenter/resources/hey060419.mspx

根据上面的,我改成如下:

Sub a2323a()
Const ForReading = 1
Const TriStateTrue = -1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\scripts\test.txt", ForReading, False, TriStateTrue)
  strText = objFile.ReadAll
  Debug.Print strText
  objFile.Close
  Set objFile = objFSO.GetFile("c:\scripts\test.txt ")
  objFile.Delete
  Set Myfile = objFSO.CreateTextFile("c:\scripts\test.txt ", True, True)
  Myfile.Write (strText)
  Myfile.Close
End Sub

当然,再改一下,换用 application.dialogs就不用指定特定文档了。

TA的精华主题

TA的得分主题

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

呵呵,殊途同归,不坏不坏,我最近在想第三种方法泥。

 

对了,孔兄,上次你的那个利用剪切板来处理网文的程序是否碰到过对某些样本文件失效的情况?这些样本你还在手头么?

我最近在研究这些玩意儿,已经有点眉目了。。。。

TA的精华主题

TA的得分主题

发表于 2006-8-10 17:33 | 显示全部楼层
没有了。这些东东如果留的话。我的机子至少要1T的容量。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 20:43 , Processed in 0.043327 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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