Страницы: 1
RSS
Разный результат при выборе файла
 
Добрый день!
Не могу понять в чем дело!
При запуске макроса openfile() корректно работает. Однако, если запустить второй, третий раз, то почему-то, программа пытается открыть старый файл.
Во вложении Приготовить таблицу КДР - файл с макросами. И два файла, которые должен макрос отрабатывать
В чем же причина такого поведения макроса?
 
В коде черным по белому написано - открыть первый попавшийся файл в выбранной папке.
С какой радости при повторном запуске этот первый попавшийся файл должен быть другим?
 
Странно. У меня создалось ложное представление, что я выбираю файл. Каким способом лучше выбирать файл?
 
FolderNames = .SelectedItems(1) & "\"
Код
filename = .SelectedItems(1) 

filename = Dir(filename & "*.xl??")
 
Огромное спасибо за ответ.

Если внести предлагаемые изменения, то ругается, тогда на команду ActiveSheet.Paste. Ругается, если так сделать:
Код
FolderName = .SelectedItems(1) 
( я убрал & \ )

или не запускается:
Код
filename = Dir(filename & "*.xl??") 

заменил на

Код
FolderName = .SelectedItems(1) 

Нашел хороший пример:

Код
Sub ShowFileDialog()
    Dim oFD As FileDialog
    Dim x, lf As Long
    'назначаем переменной ссылку на экземпляр диалога
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD 'используем короткое обращение к объекту
    'так же можно без oFD
    'With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Выбрать файлы отчетов" 'заголовок окна диалога
        .Filters.Clear 'очищаем установленные ранее типы файлов
        .Filters.Add "Excel files", "*.xls*;*.xla*", 1 'устанавливаем возможность выбора только файлов Excel
        .Filters.Add "Text files", "*.txt", 2 'добавляем возможность выбора текстовых файлов
        .FilterIndex = 2 'устанавливаем тип файлов по умолчанию - Text files(Текстовые файлы)
        .InitialFileName = "С:\Temp\Книга1.xlsx" 'назначаем папку отображения и имя файла по умолчанию
        .InitialView = msoFileDialogViewDetails 'вид диалогового окна(доступно 9 вариантов)
        If oFD.Show = 0 Then Exit Sub 'показывает диалог
        'цикл по коллекции выбранных в диалоге файлов
        For lf = 1 To .SelectedItems.Count
            x = .SelectedItems(lf) 'считываем полный путь к файлу
            Workbooks.Open x 'открытие книги
            'можно также без х
            'Workbooks.Open .SelectedItems(lf)
        Next
    End WithEnd Sub

Спасибо за помощь! Думаю, вопрос решен

Изменено: extrafant - 11.07.2019 12:09:52
Страницы: 1
Наверх