我可以将数据从CSV文件调用到我的VBA脚本吗?

时间:2018-03-08 07:45:45

标签: excel vba excel-vba excel-formula excel-2016

我想从excel中的另一个文件中获取一些数据来到我的主文件中,我对此代码完全没有问题:

Sub Call()
'
' Call Macro
'
'
    ActiveCell.FormulaR1C1 = _
        "=IF(('C:\Users\prosp\Documents\Kabu\[Book1.xlsx]Sheet1'!R[1]C[-1])-('C:\Users\prosp\Documents\Kabu\[Book1.xlsx]Sheet1'!R[1]C[-4])=0,""0"",('C:\Users\prosp\Documents\Kabu\[Book1.xlsx]Sheet1'!R[1]C[-1])-('C:\Users\prosp\Documents\Kabu\[Book1.xlsx]Sheet1'!R[1]C[-4]))"
    Range("F4").Select

End Sub

但是如果文件的类型改为.csv文件,我就无法调用我想要使用的数据。代码是这样的:

Sub Call()
'
' Call Macro
'
'
    ActiveCell.FormulaR1C1 = _
        "=IF(('C:\Users\prosp\Documents\Kabu\[Book1.csv]Sheet1'!R[1]C[-1])-('C:\Users\prosp\Documents\Kabu\[Book1.csv]Sheet1'!R[1]C[-4])=0,""0"",('C:\Users\prosp\Documents\Kabu\[Book1.csv]Sheet1'!R[1]C[-1])-('C:\Users\prosp\Documents\Kabu\[Book1.csv]Sheet1'!R[1]C[-4]))"
    Range("F4").Select

End Sub

如何使用该代码调用.csv文件? 有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

您需要先将CSV文件导入/转换为Excel。否则,您无法使用公式访问它。这是因为CSV文件只是一个逗号分隔值的文本文件,如下所示:

Year,Make,Model,Length
1997,Ford,E350,2.34
2000,Mercury,Cougar,2.38

CSV文件没有像您可以轻松访问的Excel文件那样的行和列。因此必须首先将其转换为XLSX。所以它变成了:

      A       B         C        D
1 | Year | Make    | Model  | Length |
2 | 1997 | Ford    | E350   |   2.34 |
3 | 2000 | Mercury | Cougar |   2.38 |

现在,您可以使用行和列的公式访问它。

所以我建议先打开CSV文件并将其另存为XLSX 另请参阅VBA converting csv Files in a folder to xlsx Files