Возвращает только имя файла в getopenfilename

есть ли способ получить имя файла из этого оператора? Я пытаюсь получить имя файла из этого оператора, чтобы продолжить кодирование.

В основном я пытаюсь открыть несколько книг и открыть несколько листов в соответствии с именем книги.

        strWorkbookNameAndPath = Application.GetOpenFilename _
       (FileFilter:=strFilt, _
        FilterIndex:=intFilterIndex, _
        Title:=strDialogueFileTitle, _
        MultiSelect:=True)

       fileArraySize = UBound(strWorkbookNameAndPath, 1) 
       nameArr = Split(strWorkbookNameAndPath, "\")
       strName = nameArr(UBound(nameArr))
       Worksheets.Add().Name = strName

       For i = 1 To fileArraySize

       Set wkbImportedWorkbook = Workbooks.Open(strWorkbookNameAndPath(i))
       Set wksImportedWorksheet = wkbImportedWorkbook.Sheets("Sheet1")
       With wksImportedWorksheet
       lrow = .Range("A" & .Rows.count).End(xlUp).Row
       Set rngImportCopyRange = .Range("A1:A" & lrow).EntireRow
       rngImportCopyRange.Copy
       wksMasterWorksheet.Range("A" & Rows.count).End(xlUp).Offset(1, 0).PasteSpecial        xlPasteValues
End With
wkbImportedWorkbook.Close
Set wkbImportedWorkbook = Nothing
Set wksImportedWorksheet = Nothing
Next i

person user2837847    schedule 29.11.2013    source источник
comment
Проверьте: stackoverflow.com/questions/9086309/   -  person NoChance    schedule 29.11.2013


Ответы (1)


добавьте этот код:

dim nameArr
dim strName as string

nameArr = Split(strWorkbookNameAndPath, "\")
strName = nameArr(UBound(nameArr))

ИЗМЕНИТЬ:

strWorkbookNameAndPath = Application.GetOpenFilename _
  (FileFilter:="", _
  FilterIndex:=0, _
  Title:="", _
  MultiSelect:=True)

fileArraySize = UBound(strWorkbookNameAndPath, 1)

For i = 1 To fileArraySize

  nameArr = Split(strWorkbookNameAndPath(i), "\")
  strName = nameArr(UBound(nameArr))
  Worksheets.Add().Name = strName

  Set wkbImportedWorkbook = Workbooks.Open(strWorkbookNameAndPath(i))
  Set wksImportedWorksheet = wkbImportedWorkbook.Sheets("Sheet1")
  With wksImportedWorksheet
    lrow = .Range("A" & .Rows.Count).End(xlUp).Row
    Set rngImportCopyRange = .Range("A1:A" & lrow).EntireRow
    rngImportCopyRange.Copy
    wksMasterWorksheet.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
  End With
  wkbImportedWorkbook.Close
  Set wkbImportedWorkbook = Nothing
  Set wksImportedWorksheet = Nothing
Next i
person Manuel Allenspach    schedule 29.11.2013