VBA将文件名存储在单元格中

时间:2018-03-26 09:46:39

标签: vba directory filenames

我正在尝试将文件名/目录定位到我在ms文件对话框中选择的excel中的单元格。到目前为止,我已设法为一个文件执行此操作,但如果我多次选择文件,它不会按顺序存储所有文件名,而只是只执行第一个文件。

 With fd
          .AllowMultiSelect = True
.Filters.Clear
.Filters.Add "All files", "*.*", 1
.Filters.Add "SIG Files", "*.SIG"
.Filters.Add "FLG Files", "*.FLG"
.Filters.Add "TCS Files", "*.TCS"
.Filters.Add "ROU Files", "*.ROU"
.Filters.Add "PTS Files", "*.PTS"
.Filters.Add "QST Files", "*.QST"
.FilterIndex = 1
.Title = "Select SSI Identity File"
.InitialFileName = ""
  If .Show = -1 Then
  ReDim selectedPaths(.SelectedItems.Count)


        For I = 0 To .SelectedItems.Count - 1
        selectedPaths(I) = .SelectedItems(I + 1)


                 lRow = Cells(Rows.Count, 54).End(xlUp).Row

       Z = lRow + 1

           **Range("BA5").Offset(I, 0).Value = selectedPaths(I)**

由于我的fdbox允许使用多选项,我希望按顺序填充范围BA5和文件名/目录。

感谢是否有人可以提供帮助。

1 个答案:

答案 0 :(得分:0)

应该是这样的:

For I = 1 To fd.SelectedItems.Count
    Range("BA" & 4 + I).Value = fd.SelectedItems(I)
Next I

如果要切断目录,请在第二行使用instrrev:

Range("BA" & 4 + I).Value = Right(fd.SelectedItems(I), Len(fd.SelectedItems(I)) - InStrRev(fd.SelectedItems(I), "\"))

编辑(以下评论) 如果要在BA列的第一个空闲单元格中添加新文件名,它甚至更简单:

For I = 1 To fd.SelectedItems.Count
    Range("BA" & Cells.Rows.Count).End(xlUp).Offset(1) = fd.SelectedItems(I)
Next I