0

无论我尝试什么方法(目前我正在使用 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 中打开它,它工作正常。

4

1 回答 1

2

您想要实现的目标(来自有问题的评论)不是问题 - 下面是我快速生成的一段代码,主要使用宏记录器中的部分:

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

这将遍历放入的所有类型的 Excel 文件,SourceFolder并在找到定义的字符串时显示一条消息。书中的纸张数量及其隐藏/可见状态无关紧要。

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

我很确定您也可以将其用于 DOC 文件:只需将宏记录器用于可能不同的部分,例如搜索。祝你好运!

如果您决定将 Excel 文件内容读取为“类似二进制”的内容(但我建议不要这样做),请查看ADODB.Stream对象。

于 2013-01-31T13:43:47.633 回答