前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >问与答77: 为什么使用VBA操作文件时会出现“输入超出文件尾”错误?

问与答77: 为什么使用VBA操作文件时会出现“输入超出文件尾”错误?

作者头像
fanjy
发布2020-02-18 12:08:38
2.5K0
发布2020-02-18 12:08:38
举报
文章被收录于专栏:完美Excel完美Excel

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

代码语言:javascript
复制
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 iFileNumber
End Sub

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

代码语言:javascript
复制
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 iFileNumber
End Sub

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

图1

这如何解决呢?

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

代码语言:javascript
复制
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 iFileNumber
End Sub

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

图2

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档