VBA根据标准将文本文件读入Excel电子表格

时间:2013-09-20 02:56:32

标签: vba criteria

伙计们,我正在尝试使用VBA将一个非常大的空格分隔文本文件读入Excel电子表格。文本文件包含5列数据,这些数据由多个空格分隔。我已设法打开文件并将文件拆分为各个列。现在我想只选择满足特定条件的行作为电子表格的输出。因此,例如,我想只选择第一列中的DIES和第二列中的行是EUR。有关如何有效实现这一目标的任何建议?我尝试过使用If / Else语句的各种组合,但这似乎不起作用。谢谢。

文字档案

DIES         EUR         REFGR       OCT2008                    847.000 
VARS         EUR         REFGR       NOV2008                    154.000 
EFFS         OECD        REFGR       DEC2008                    507.000 
DIES         EUR         REFGR       JAN2008                    090.000 
USUE         EUR         REFGR       FEB2008                    836.000 

到目前为止我的代码

Sub ImportData()

Open "FileName" For Input As #1

lRow = 2

Do While Not EOF(1)
    Line Input #1, Data
    Data = Application.WorksheetFunction.Trim(Data)           
sData = Split(Data, " ")                                    

    With Sheet1
        lColumn = 2
        For intCount = LBound(sData) To UBound(sData)
            .Cells(lRow, lColumn) = sData(intCount)
            lColumn = lColumn + 1
        Next intCount
    End With
    lRow = lRow + 1

Loop

Close #1


End Sub

2 个答案:

答案 0 :(得分:1)

或者,将文本文件视为数据源并进行查询。

使用DAO: http://msdn.microsoft.com/en-au/library/aa293458(v=vs.60).aspx

使用ADO: http://msdn.microsoft.com/en-us/library/ms974559.aspx

答案 1 :(得分:0)

我会选择那样的东西。您可以编写一个函数来决定是否应该将一行写入文件。

function IsValid(stringArray as string()) as boolean
    ' Your criteria goes here, maybe with case/switches or lots of ifs
end function

然后你的代码就像:

...
With Sheet1
    lColumn = 2
    if IsValid(sData) then
        For intCount = LBound(sData) To UBound(sData)
            .Cells(lRow, lColumn) = sData(intCount)
            lColumn = lColumn + 1
        Next intCount
    end if
End With
....

如果你的条件布局有问题,你需要提供更多信息,以便我们可以帮助=)。