vb 对比txt文件是否一样_问与答77: 为什么使用VBA操作文件时会出现“输入超出文件尾”错误?...

学习Excel技术,关注微信公众号:

excelperfect

Q在《VBA专题08: 使用VBA操作文本文件》中,我们讲解了如何使用VBA来创建、修改、读取文本文件等操作。我们在示例代码中创建的文本文件内容都是英文,因此一切顺利。然而,如果我们创建的文本文件是中文,结果如何呢?如下面的代码,创建一个含有中文内容的文本文件:

Sub CreateTextFile()    Dim iFileNumber As Integer    Dim strFilePath As String       '创建的文件的路径和名字    strFilePath = "C:\MyFile.txt"       '确定下一个可用的文件序号    iFileNumber = FreeFile       '打开文本文件    Open strFilePath For Output As iFileNumber       '写入文本    Print #iFileNumber, "你好!"    Print #iFileNumber, "这是由VBA创建的文本文件."    Print #iFileNumber, "完美Excel."       '保存并关闭文件    Close iFileNumberEnd Sub

然后,使用下面的代码来读取该文件:

Sub ExtractTextFormFile()    Dim iFileNumber As Integer    Dim strFilePath As String    Dim strFileContent As String          '文本文件的路径    strFilePath = "C:\MyFile.txt"       '确定下一个可用的文件序号    iFileNumber = FreeFile       '打开文件    Open strFilePath For Input As iFileNumber       '将文件内容存储到字符串变量中    strFileContent = Input(LOF(iFileNumber),iFileNumber)       '输出文件内容    MsgBox strFileContent       '关闭文件    Close iFileNumberEnd Sub

会发生错误,如下图1所示。

c29de16984bdfade5b4ebd9ae3bdd774.png

图1

这如何解决呢?

A文本文件包含英文内容可以,但包含中文内容却不行,其原因显而易见,就是文本文件中存在中文。这是由于VB内部采用Unicode编码方式的问题,使用下面的代码解决:

Sub ExtractTextFormFile1()    Dim iFileNumber As Integer    Dim strFilePath As String    Dim strFileContent As String          '文本文件的路径    strFilePath = "C:\MyFile.txt"       '确定下一个可用的文件序号    iFileNumber = FreeFile       '打开文件    Open strFilePath For Input As iFileNumber       '将文件内容存储到字符串变量中    strFileContent = StrConv(InputB(LOF(iFileNumber),iFileNumber), vbUnicode)       '输出文件内容    MsgBox strFileContent       '关闭文件    Close iFileNumberEnd Sub

运行正常,结果如下图2所示。

a22edd91c1bd37426661036c5da50500.png

图2

有人说,可以将文件内容先读取到文本框控件内,然后将该控件的内容再转到变量中,这样就可以解决了。我没有试过这种方法,有兴趣的朋友可以试一下。

2286ecdd6b3c3b28f0f7647eb4bfdb26.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值