2016-02-17 3 views
0

Я использую следующий код для перечисления файлов в папке.Excel VBA - удалить FileDialog

Код работает отлично, но мне не нужен пользователь, чтобы выбрать папку, папка будет одинаковой каждый раз.

Можно ли удалить поле FileDialog?

With Application.FileDialog(msoFileDialogFolderPicker) 
    .Title = "Choose the folder" 
    .Show 
End With 

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

Sub FolderNames() 

Application.ScreenUpdating = False 
Dim xPath As String 
Dim xWs As Worksheet 
Dim fso As Object, j As Long, folder1 As Object 
With Application.FileDialog(msoFileDialogFolderPicker) 
    .Title = "Choose the folder" 
    .Show 
End With 
On Error Resume Next 
xPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\" 
Application.Workbooks.Add 
Set xWs = Application.ActiveSheet 
xWs.Cells(1, 1).Value = xPath 
xWs.Cells(2, 1).Resize(1, 5).Value = Array("Path", "Dir", "Name", "Date Created", "Date Last Modified") 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set folder1 = fso.getFolder(xPath) 
getSubFolder folder1 
xWs.Cells(2, 1).Resize(1, 5).Interior.Color = 65535 
xWs.Cells(2, 1).Resize(1, 5).EntireColumn.AutoFit 
Application.ScreenUpdating = True 
End Sub 
Sub getSubFolder(ByRef prntfld As Object) 
Dim SubFolder As Object 
Dim subfld As Object 
Dim xRow As Long 
For Each SubFolder In prntfld.SubFolders 
    xRow = Range("A1").End(xlDown).Row + 1 
    Cells(xRow, 1).Resize(1, 5).Value = Array(SubFolder.Path, Left(SubFolder.Path, InStrRev(SubFolder.Path, "\")), SubFolder.Name, SubFolder.DateCreated, SubFolder.DateLastModified) 
Next SubFolder 
For Each subfld In prntfld.SubFolders 
    getSubFolder subfld 
Next subfld 
End Sub 
+0

Если путь вашей папки является статическим, вы можете просто установить xPath на путь вашей папки и удалить связанные с FileDialog строки. –

ответ

1

Извините, подумайте, что я унываю - я ответил на свой вопрос. Не уверен, что это лучший способ, но, похоже, работает нормально.

Я заменяю следующее:

With Application.FileDialog(msoFileDialogFolderPicker) 
    .Title = "Choose the folder" 
    .Show 
End With 
On Error Resume Next 
xPath = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) & "\" 

С;

Dim toplvl As String 
toplvl = "W:\ISO 9001\INTEGRATED_PLANNING" 
xPath = toplvl & "\" 
+0

Да, это способ сделать это. В качестве альтернативы удалите эти три новые строки, удалите 'Dim xPath', поместите' Const TOPLVL As String = "W: \ ISO 9001 \ INTEGRATED_PLANNING \" 'в самую верхнюю часть модуля и просто используйте' TOPLVL' вместо 'xPath ' –

Смежные вопросы