VBA循环遍历文本文件并导入到不同的表中

VBA循环遍历文本文件并导入到不同的表中,vba,loops,Vba,Loops,我的项目是打开一个文本文件并循环遍历数据,当找到合适的数据时,我们希望将该行数据插入表中。有四种不同类型的数据要插入到四个不同的表中 下面是我需要循环使用的示例数据,以及我的代码。问题是我的代码没有选择任何TRAN数据并调试打印它。非常感谢您的阅读和帮助 $TRAN,001003659,0,2,0,2,2550,04/01/10,09:14:00,6 $PAYM,3,Credit Card,2800,2550,0,0,0 $ITEM,00006110,18,1,0,1275,A,,,4,0,0,

我的项目是打开一个文本文件并循环遍历数据,当找到合适的数据时,我们希望将该行数据插入表中。有四种不同类型的数据要插入到四个不同的表中

下面是我需要循环使用的示例数据,以及我的代码。问题是我的代码没有选择任何TRAN数据并调试打印它。非常感谢您的阅读和帮助

$TRAN,001003659,0,2,0,2,2550,04/01/10,09:14:00,6
$PAYM,3,Credit Card,2800,2550,0,0,0
$ITEM,00006110,18,1,0,1275,A,,,4,0,0,1275,,0
$ITEM,00006110,18,1,0,1275,A,,,4,0,0,1275,,0
$NOSALE,001003660,04/01/10,09:18:34,6
$TRAN,001003661,23,9,3,13,7010,04/01/10,15:14:27,5

行输入
将始终返回下一行

因此,
Line Input#1,varNosale
将实际返回第二个$ITEM,而不是$NOSALE行

然后在第二个循环中,您的第一条语句
Line Input#1,varTran
将读取第五行,这是$NOSALE,而不是您正在检查的TRAN

更好的方法类似于以下伪代码:

Dim blnFirst As Boolean
blnFirst = True
Do Until EOF(1)
    Line Input strLine
    Select Case Left(strLine, 5)
        Case "$TRAN":
            If Not blnFirst Then
                Execute insert SQL here, using strTranID, strItemIds, etc.
            End If
            strTranID = ...
            strItemIds = ""
            blnFirst = False
        Case "$PAYM": strPayment = ...
        Case "$ITEM": strItemIds = strItemIds & ... 'maybe use an array here
        Case "$NOSA": strNoSale = ...
    End Select    
Loop
Dim blnFirst As Boolean
blnFirst = True
Do Until EOF(1)
    Line Input strLine
    Select Case Left(strLine, 5)
        Case "$TRAN":
            If Not blnFirst Then
                Execute insert SQL here, using strTranID, strItemIds, etc.
            End If
            strTranID = ...
            strItemIds = ""
            blnFirst = False
        Case "$PAYM": strPayment = ...
        Case "$ITEM": strItemIds = strItemIds & ... 'maybe use an array here
        Case "$NOSA": strNoSale = ...
    End Select    
Loop