使用excel vbavalidation具体的数据

希望得到一个项目,我试图改善一点帮助。 我有一个函数,我正在使用我的工作簿中的两个单元格文件path和文件名检索csv文件(从约13000文件的文件夹)的最新date。 它工作的很好,并会很快find我正在寻找的文件。

为了改进这个工具,我需要看看csv里面,并validation一些数字匹配我的工作簿中的另一个单元格。 我不知道如何告诉程序在哪里看,以及如何检查比赛。 数字每次都在同一位置,并且与我的工作簿中的单元格格式完全相同。 csv也不使用逗号(如果有的话)。 例如,这些号码将位于第6列和第2行。 我想在返回最近的date之前用我的A5单元格的值检查。 如果不匹配,我想检查比赛的下一个最近的date等等。 我正在使用的当前函数:

Function ReportTime(ByVal sESN As String, ByVal sFolder As String) Dim FileName As String Dim MostRecentFile As String Dim MostRecentDate As Date Dim oFSO As FileSystemObject If Right(sFolder, 1) <> "\" Then sFolder = sFolder & "\" Set oFSO = CreateObject("Scripting.FileSystemObject") If oFSO.FolderExists(sFolder) Then FileName = Dir(sFolder & sESN & "*hdr.txt", 0) If FileName <> "" Then MostRecentFile = FileName MostRecentDate = FileDateTime(sFolder & FileName) Do While FileName <> "" If FileDateTime(sFolder & FileName) > MostRecentDate Then MostRecentFile = FileName MostRecentDate = FileDateTime(sFolder & FileName) End If FileName = Dir DoEvents Loop End If Else MostRecentFile = "Err: folder not found." End If Set oFSO = Nothing ReportTime = MostRecentDate End Function 

与你已有的相比,它同样容易。 这是一个示例代码。 它所做的是通过逐行查看文件。

 Sub ReadTextFile() Dim fpath As String Dim fline As String Dim fnumb As Long Dim i As Long Dim Wanted As String fpath = "C:\Test\Testfile.txt" fnumb = FreeFile Open fpath For Input As #fnumb i = 1 Do While Not EOF(fnumb) Line Input #fnumb, fline If i = 2 Then Wanted = Split(fline, vbTab)(5) '<~~ here is the output Exit Do End If i = i + 1 Loop Close #fnumb End Sub 

如果你想把注意力集中在文件的第2行,只要在i = 2时候抓住它

在第2行获取文本后,如果你的文件是标签分隔的,你可以使用split(fline, vbTab)(5)来提取第6列中的内容; 否则,如果你的文件是一个固定宽度的文件,那么只需使用MIDfunction。

有了你所需要的之后,只需exit do可以结束循环,快速结束程序,而不必通过整个文件。

心连心