Редактировать: После user3561813
предложение добавить "/"
, теперь он читает первый файл. У меня есть сообщение об ошибке "9"
. Он правильно читает первый файл. В конечном итоге я пытаюсь открыть каждый файл и прочитать имя и возраст (это тестирование не является реальной производственной формой). И верните значения обратно на мой основной рабочий лист.Excel VBA: Как открыть и прочитать из файла excel
Оригинальный вопрос
Я пытаюсь читать сотни первенствовать форм в папке, прочитать определенную позицию клеток, и записать их в моем тестирования листа. Я искал этот учебник и попытался написать свой код. Но когда я выполняю функцию «Получение папок», выбираю путь к папке, он не зацикливает файлы excel, которые у меня есть. (Или записать их имена)
'Source: https://www.youtube.com/watch?v=7x1T4s8DVc0
Sub GettingFolder()
Dim SelectedFolder As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Select folder"
.ButtonName = "Confirm"
.InitialFileName = "U:\"
If .Show = -1 Then
'ok clicked
SelectedFolder = .SelectedItems(1)
MsgBox SelectedFolder
' This is where I want to call my function
LoopFiles (SelectedFolder)
Else
'cancel clicked
End If
End With
End Sub
' Source: http://www.excel-easy.com/vba/examples/files-in-a-directory.html
Sub LoopFiles(path As String)
Dim directory As String, fileName As String, sheet As Worksheet
Dim i As Integer, j As Integer
' Avoid Screen flicker and improve performance
Application.ScreenUpdating = False
' Fixed per suggestion below..
directory = path & "\"
fileName = Dir(directory & "*.xl??")
Do While fileName <> ""
i = i + 1
j = 2
Cells(i, 1) = fileName
Workbooks.Open (directory & fileName)
For Each sheet In Workbooks(fileName).Worksheets
Workbooks("Testing.xlsm").Worksheets(1).Cells(i, j).Value = sheet.Name
j = j + 1
Next sheet
Workbooks(fileName).Close
fileName = Dir()
Loop
' Reset the screen update setting
Application.ScreenUpdating = True
End Sub
Если вы объясните, что «это не позволяет мне выполнить его», значит, вы значительно увеличите свои шансы получить ответы. – SantiBailors
Действительно ли 'fileName = Dir (directory &" * .xl ?? ")' фактически возвращает непустую строку? Возвращает ли значение аргумента 'path' обратная косая черта? Возможно, вы захотите напечатать результат 'directory & * * .xl ??", чтобы убедиться, что это значение, которое при использовании в качестве аргумента 'Dir()' должно возвращать то, что вы ожидаете. – SantiBailors
Помните, что «путь», когда он получен в LoopFiles, не имеет задней обратной косой черты, поэтому ваш 'filename = Dir (directory &" * .xl ?? ")' не будет создавать правильный путь, а это означает, что Dir будет return пустая строка – Dave