VBA基于列表中的文件名导入工作表

时间:2019-08-09 15:44:16

标签: excel vba

我有以下代码将工作表导入到工作簿中。

Sub Importsheet()

Sheets.Add Type:= _
"E:\MyFolder\Manipulated Data\Test\" & Range("E2").Text & ".csv"
ActiveSheet.Move After:=Worksheets(Worksheets.Count)

EndSub

基本上,文件夹路径和文件扩展名是恒定的,但实际文件名是从单元格E2中提取的。

我现在有一个要导入的文件名列表。列表始终在同一单元格(A6)中开始,但是最后一行根据列表长度而变化。 我不确定如何更改上面的代码,以便vba遍历列出的所有名称。

最重要的是,如果文件不存在,我不希望出现任何错误,而是在相应行的B列中填充“无法定位文件”文本(例如,如果文件在A6不存在,单元格B6的值现在应该为“无法找到文件”)

感谢所有帮助!

1 个答案:

答案 0 :(得分:1)

问题:

  • 使用Activate
  • 使用Activesheets
  • 使用Next Cell代替Next mycellNext
  • 范围的错误分配

这应该有效:

Sub ImportAllSheets()

Dim myCell As Range
Dim LastRowColumnA As Long

With ActiveWorkbook.Worksheets(2)

LastRowColumnA = .Range("A" & Rows.Count).End(xlUp).row



For Each myCell In .Range("A6:A" & LastRowColumnA)

    If Len(Dir("E:\MyFolder\Manipulated Data\Test\" & myCell.Value & ".csv")) > 0 Then

        Sheets.Add Type:="E:\MyFolder\Manipulated Data\Test\" & myCell.Value & ".csv", After:=Worksheets(Worksheets.Count)

    Else: myCell.Offset(0, 1) = "File Not Found"
    End If

Next

End With

End Sub