问与答77:为什么使⽤VBA操作⽂件时会出现“输⼊超出⽂件尾”错误?
excelperfect
Q:在《VBA专题08: 使⽤VBA操作⽂本⽂件》中,我们讲解了如何使⽤VBA来创建、修改、读取⽂本⽂件等操作。我们在⽰例代码中创建的⽂本⽂件内容都是英⽂,因此⼀切顺利。然⽽,如果我们创建的⽂本⽂件是Sub CreateTextFile() Dim iFileNumber As Integer Dim strFilePath As String '创建的⽂件的路径和名字 strFilePath = 'C:\' '确定下⼀个可⽤的⽂件序号 iFileNumber = FreeFile '打开⽂本⽂件 Open strFilePath For Output As iFileNumber '写⼊⽂本
然后,使⽤下⾯的代码来读取该⽂件:
Sub ExtractTextFormFile()    Dim iFileNumber As Integer    Dim strFilePath As String    Dim strFileContent As String          '⽂本⽂件的路径    strFilePath = 'C:\'      '确定下⼀个可⽤的⽂件序号    iFileNumber = FreeFile      '打开⽂件    Open strFilePath 会发⽣错误,如下图1所⽰。
图1
这如何解决呢?
A:⽂本⽂件包含英⽂内容可以,但包含中⽂内容却不⾏,其原因显⽽易见,就是⽂本⽂件中存在中⽂。这是由于VB内部采⽤Unicode编码⽅式的问题,使⽤下⾯的代码解决:
Sub ExtractTextFormFile1() Dim iFileNumber As Integer Dim strFilePath As String Dim strFileContent As String '⽂本⽂件的路径 strFilePath = 'C:\' '确定下⼀个可⽤的⽂件序号 iFileNumber = FreeFile '打开⽂件 Open strFilePath For Input As iFileNumbe 运⾏正常,结果如下图2所⽰。
图2
字符串长度超出定义值有⼈说,可以将⽂件内容先读取到⽂本框控件内,然后将该控件的内容再转到变量中,这样就可以解决了。我没有试过这种⽅法,有兴趣的朋友可以试⼀下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。