我有一个非常简单的vba宏,我正试图将文本文件导入excel。文本文件具有给定名称,并且只有一列具有可变行数的数据。
我需要做的是 1)从特定工作表中的特定单元格中读取文件名 2)使excel将文件中的所有数据行导入单个列。
这是我到目前为止所做的:
Sub Import()
fname = Range("E3")
datadir = Application.ActiveWorkbook.Path
fpath = datadir & "\" & fname
Open fpath For Input As #1
Do Until EOF(1)
Line Input #1, LineFromFile
Range("E3") = LineFromFile
Loop
Close #1
End Sub
它打开文本文件并使用在单元格E3中输入的文件名导入数据,但它只打印数据文件中的最后一个值。如果我在后台打开电子表格运行调试器,我可以看到
原始数据和所需的输出示例: 文本文件内容:
5
4.24E-09
15
4.32E-09
25
4.41E-09
35
4.49E-09
45
4.58E-09
55
4.67E-09
和an example我正试图让最终的电子表格看起来像。理想情况下,只需单击“导入”按钮,我就可以使用单个宏一次导入多个文件。如果我能获得初始导入循环的帮助,我将不胜感激!
答案 0 :(得分:0)
在循环中,您只需重复将刚刚读取的新文件行值分配给单元格E3。如果文件有100行,当它完成时它将覆盖E3中的值99次,只留下它读取的最后一个值,在E3中
制作一些额外的代码,将E3更改为E4,E5等。
提示:
答案 1 :(得分:0)
您将每个行值分配给同一个单元格。简单地说,每次读取一行时递增一个变量(x),并使用Range.Offset([Row],[Column])
属性将新行写入Range("E3")
的偏移量。
范围(" E3")。偏移(x)= LineFromFile
Sub Import()
Dim x As Long
fname = Range("E3")
datadir = Application.ActiveWorkbook.path
fpath = datadir & "\" & fname
Open fpath For Input As #1
Do Until EOF(1)
Line Input #1, LineFromFile
Range("E3").Offset(x) = LineFromFile
x = x + 1
Loop
Close #1
End Sub