У меня есть функция, которая предлагает пользователю выбрать папку и подпрограмму, которая объединит файлы в папке в один документ, но я не могу заставить их работать вместе.
Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
Sub ConslidateWorkbooksPrompt()
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Application.ScreenUpdating = False
FolderPath = GetFolder()
Filename = Dir(FolderPath & "*.csv")
Do While Filename <> ""
Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
Application.ScreenUpdating = True
End Sub
Когда я сохраняю подпрограмму отдельно и запускаю ее, где FolderPath = "C: \ docs \ SampleFolder \", тогда она работает нормально. Вместо того, чтобы вручную изменять путь к папке, я бы хотел, чтобы пользователь мог выбирать свой собственный, но я думаю, что я как-то неправильно вызываю функцию.