VB6 – 无法完整读取Excel文件

无论我尝试什么方法(目前我正在使用Scripting.FileSystemObject),我只是不能正确读取这个XLS文件。 这是我的代码(我不想读取单元格,我想读取文件,就好像它是一个文本文件)

Dim fso As New FileSystemObject Dim f As File Dim fsoStream As TextStream Dim strLine As String Set f = fso.GetFile("C:\Users\Admin\Desktop\ara\DOSYA.xls") Set fsoStream = f.OpenAsTextStream(ForReading) Do While Not fsoStream.AtEndOfStream strLine = fsoStream.ReadLine Text1.Text = Text1.Text & strLine Loop fsoStream.Close Set fsoStream = Nothing Set f = Nothing Set fso = Nothing 

我得到的只是该文件的前5-6个字符,然后再多一点乱码,就是这样。 如果我在Excel中打开它工作正常。

你想达到的目的(从问题的意见)是不是一个问题 – 下面是一个快速生成的代码大部分使用macroslogging器的部分:

 Sub SearchString() Dim LookupString As String Dim WS As Worksheet Dim SearchResult As Range Dim MatchString As Boolean Dim SourceFolder As String Dim FileName As String SourceFolder = "D:\DOCUMENTS\" 'Trailing "\" is required LookupString = "abc" FileName = Dir(SourceFolder & "*.xls?") 'Extension may be set using wildcards Do While FileName <> "" Application.DisplayAlerts = False Application.Workbooks.Open (SourceFolder & FileName) Application.DisplayAlerts = True MatchString = False For Each WS In Workbooks(FileName).Worksheets Set SearchResult = WS.Cells.Find(What:=LookupString, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, _ SearchFormat:=False) If Not SearchResult Is Nothing Then MatchString = True Next WS If MatchString = True Then MsgBox "File: " & Chr(34) & FileName & Chr(34) & vbNewLine & "has " & Chr(34) & LookupString & Chr(34) & " string." Application.DisplayAlerts = False Workbooks(FileName).Close SaveChanges:=False Application.DisplayAlerts = True FileName = Dir Loop End Sub 

这将循环通过放在SourceFolder中的所有types的Excel文件,并将显示一个消息,以防定义string被发现。 书中的页数及其隐藏/可见状态无关紧要。

示例文件是共享的: https : //www.dropbox.com/s/ipmztbz6vu7y4qf/FilesLookupString.xlsm

我很肯定你也可以适应这个DOC文件:只要使用macroslogging器的部分,可能会有所不同,例如search。 祝你好运!

如果你决定读取Excel文件内容为“类似二进制”(但我build议不要这样做) – 看向ADODB.Stream对象。