VBA循环遍历文本文件并导入到不同的表中
我的项目是打开一个文本文件并循环遍历数据,当找到合适的数据时,我们希望将该行数据插入表中。有四种不同类型的数据要插入到四个不同的表中 下面是我需要循环使用的示例数据,以及我的代码。问题是我的代码没有选择任何TRAN数据并调试打印它。非常感谢您的阅读和帮助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,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