Страницы: 1
RSS
Указание каталога в макросе для открытия файла.
 
Добрый день!
У меня есть макрос, который открывает несколько файлов один за другим и вносит в них определенные изменения.
В макросе указан путь к файлу. Все файлы в одной папке, но папка периодически перемещается.
Как сделать так, чтобы при запуске макроса, появлялось диалоговое окно с выбором пути к папке? И чтобы этот путь подставлялся во все условия макроса
 
читаем в справке про Application.GetOpenFilename Method
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Код
1
2
3
4
5
6
7
8
9
10
11
Dim sFolder As String, sFiles As String
      
         
  On Error Resume Next
         
        With Application.FileDialog(msoFileDialogFolderPicker)
                    If .Show = False Then Exit Sub
                    sFolder = .SelectedItems(1)
                End With
              sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
         
Кажется так, проверьте, только в конце End with  не забудьте.  
Изменено: alexthegreat - 13.07.2015 16:22:50
 
А как это правильно использовать?
Если у меня макрос
Код
1
2
3
Sub Macro2()
    Workbooks.Open Filename:="D:\New folder\Book1.xlsx"
End Sub

То как мне добавить замену D:\New folder\ на выбранную в диалоговом окне папку?
Изменено: Prosmith - 13.07.2015 18:28:54
 
Тут есть всё необходимое, с примерами использования...
http://excelvba.ru/code/GetFileOrFolderPath

Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub Macro2()
    Filename$ = GetFilePath()
    If Filename$ = "" Then Exit Sub
    Workbooks.Open Filename$
End Sub
 
Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _
                     Optional ByVal InitialPath As String = "c:\", _
                     Optional ByVal FilterDescription As String = "Файлы Excel", _
                     Optional ByVal FilterExtention As String = "*.*") As String
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)
        .ButtonName = "Выбрать": .Title = Title:
        .InitialFileName = GetSetting(Application.Name, "GetFilePath", "folder", InitialPath)
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        GetFilePath = .SelectedItems(1)
        folder$ = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), "\"))
        SaveSetting Application.Name, "GetFilePath", "folder", folder$
    End With
End Function
Изменено: Игорь - 13.07.2015 17:01:50
 
Почти получилось.
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function GetFolderPath(Optional ByVal Title As String = "Select folder", _
                       Optional ByVal InitialPath As String = "c:\") As String
 
    Dim PS As String: PS = Application.PathSeparator
    With Application.FileDialog(msoFileDialogFolderPicker)
        If Not Right$(InitialPath, 1) = PS Then InitialPath = InitialPath & PS
        .ButtonName = "???????": .Title = Title: .InitialFileName = InitialPath
        If .Show <> -1 Then Exit Function
        GetFolderPath = .SelectedItems(1)
        If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS
    End With
End Function
  
Sub Path()
    Folder = GetFolderPath("Name", ThisWorkbook.Path)
 
    If Folder = "" Then Exit Sub
    Workbook.Open Folder & "\123.xlsx"      
End Sub

Не понимаю как правильно сослаться на имя файла?
Если из выбранной папки мне надо открыть файл 123.xlsx, как это сделать?
 
Диалоговое окно выбора файлов/папки
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Все заработало, всем большое спасибо!
Страницы: 1
Читают тему
Наверх
Loading...