Версия для слабовидящих
Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

 

= Мир MS Excel/Повторное открытие диалогового окна открытия файлов - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Повторное открытие диалогового окна открытия файлов
Homo_Faber Дата: Понедельник, 26.02.2024, 15:11 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2013
Привет всем кодерам на VBA!
Возник несколько необычный вопрос (поиск по Интернету ничего не дал): В процессе написания программы столкнулся со следующей проблемой - во время работы необходимо несколько раз вызвать диалог открытия файлов Application.FileDialog(msoFileDialogOpen). После выбора файла(ов) окно диалога закрывается и продолжается работа. Пока не приходит момент выбора других файлов. Вот тут-то и начинается странное. Диалог не открывается, а просто открывает те же файлы, что были открыт в первый раз. Как можно очистить выбор файлов (или как правильно сказать)?
Вот кусок программы, открывающий файлы.


Dim N_Cnt As Integer
Dim Fd_O As FileDialog
Dim VSI As Variant

' Диалог открытия файла
Set Fd_O = Application.FileDialog(msoFileDialogOpen)

' Сброс счётчика открытых файлов
N_Cnt = 0

With Fd_O
' Только файлы EXCEL
    .Filters.Add "Только файлы Excel", "*.xls*"
' Задание начальной папки
    .InitialFileName = PS_Path
    Do
        For Each VSI In .SelectedItems
' Открытие файла для последующей обработки
            Workbooks.Open Filename:=VSI, Origin:=xlWindows
' Имя открытого файла
            S_Nam = ActiveWorkbook.Name
' Приращение счётчика открытых файлов
            N_Cnt = N_Cnt + 1
' Копирование активного листа в книгу XXXXXXX
            ActiveSheet.Copy After:=Workbooks("XXXXXXX.xlsm").Sheets(N_Cnt)
' Закрытие активного файла
            Workbooks(S_Nam).Close False
' Переименование активного листа
            ActiveSheet.Name = "ФАЙЛ " & N_Cnt
        Next VSI
    Loop While .Show <> 0
End With


На всякий случай поясняю, что PS_Path - общая переменная пути к файлу.
Может я чего и накосячил, прошу строго не судить... :)


Сообщение отредактировал Homo_Faber - Понедельник, 26.02.2024, 15:11
 
Ответить
СообщениеПривет всем кодерам на VBA!
Возник несколько необычный вопрос (поиск по Интернету ничего не дал): В процессе написания программы столкнулся со следующей проблемой - во время работы необходимо несколько раз вызвать диалог открытия файлов Application.FileDialog(msoFileDialogOpen). После выбора файла(ов) окно диалога закрывается и продолжается работа. Пока не приходит момент выбора других файлов. Вот тут-то и начинается странное. Диалог не открывается, а просто открывает те же файлы, что были открыт в первый раз. Как можно очистить выбор файлов (или как правильно сказать)?
Вот кусок программы, открывающий файлы.
[vba]
Dim N_Cnt As IntegerDim Fd_O As FileDialogDim VSI As Variant' Диалог открытия файлаSet Fd_O = Application.FileDialog(msoFileDialogOpen)' Сброс счётчика открытых файловN_Cnt = 0With Fd_O' Только файлы EXCEL     .Filters.Add "Только файлы Excel", "*.xls*"' Задание начальной папки     .InitialFileName = PS_Path     Do        For Each VSI In .SelectedItems' Открытие файла для последующей обработки            Workbooks.Open Filename:=VSI, Origin:=xlWindows' Имя открытого файла            S_Nam = ActiveWorkbook.Name' Приращение счётчика открытых файлов            N_Cnt = N_Cnt + 1' Копирование активного листа в книгу XXXXXXX            ActiveSheet.Copy After:=Workbooks("XXXXXXX.xlsm").Sheets(N_Cnt)' Закрытие активного файла            Workbooks(S_Nam).Close False' Переименование активного листа            ActiveSheet.Name = "ФАЙЛ " & N_Cnt        Next VSI     Loop While .Show <> 0End With
[/vba]
На всякий случай поясняю, что PS_Path - общая переменная пути к файлу.
Может я чего и накосячил, прошу строго не судить... :)

Автор - Homo_Faber
Дата добавления - 26.02.2024 в 15:11
_Boroda_ Дата: Понедельник, 26.02.2024, 17:04 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16895
Репутация: 6612 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Попробуйте после цикла обнулить переменную

Set Fd_O = Nothing



Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПопробуйте после цикла обнулить переменную
[vba]
Set Fd_O = Nothing
[/vba]

Автор - _Boroda_
Дата добавления - 26.02.2024 в 17:04
Homo_Faber Дата: Вторник, 27.02.2024, 07:09 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2013
Цитата _Boroda_, 26.02.2024 в 17:04, в сообщении № 2 ( писал(а)):
Попробуйте после цикла обнулить переменную

Пробовал - не помогает...
 
Ответить
Сообщение
Цитата _Boroda_, 26.02.2024 в 17:04, в сообщении № 2 ( писал(а)):
Попробуйте после цикла обнулить переменную

Пробовал - не помогает...

Автор - Homo_Faber
Дата добавления - 27.02.2024 в 07:09
_Boroda_ Дата: Вторник, 27.02.2024, 10:27 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16895
Репутация: 6612 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Цитата Homo_Faber, 27.02.2024 в 07:09, в сообщении № 3 ( писал(а)):
Пробовал - не помогает...


Покажите пробовалку. И вообще весь код макроса неплохо бы посмотреть.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Цитата Homo_Faber, 27.02.2024 в 07:09, в сообщении № 3 ( писал(а)):
Пробовал - не помогает...


Покажите пробовалку. И вообще весь код макроса неплохо бы посмотреть.

Автор - _Boroda_
Дата добавления - 27.02.2024 в 10:27
Homo_Faber Дата: Вторник, 27.02.2024, 11:44 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2013
_Boroda_, Практически весь код выложил (касательно открытия файлов). После End with вставлял Set Fd_O = Nothing. Что с обманкой, что без обманки...


Public Sub OtkrFile()

Dim N_Cnt As Integer
Dim Fd_O As FileDialog
Dim VSI As Variant

' Диалог открытия файла
Set Fd_O = Application.FileDialog(msoFileDialogOpen)

' Сброс счётчика открытых файлов
N_Cnt = 0

With Fd_O
' Только файлы EXCEL
    .Filters.Add "Только файлы Excel", "*.xls*"
' Задание начальной папки
    .InitialFileName = PS_Path
    Do
        For Each VSI In .SelectedItems
' Открытие файла для последующей обработки
            Workbooks.Open Filename:=VSI, Origin:=xlWindows

' Имя открытого файла
            S_Nam = ActiveWorkbook.Name
' Приращение счётчика открытых файлов
            N_Cnt = N_Cnt + 1
' Копирование активного листа в книгу XXXXXXX
            ActiveSheet.Copy After:=Workbooks("XXXXXXX.xlsm").Sheets(N_Cnt)
' Закрытие активного файла
            Workbooks(S_Nam).Close False
' Переименование активного листа
            ActiveSheet.Name = "ФАЙЛ " & N_Cnt
        Next VSI
    Loop While .Show <> 0
End With

Set Fd_O = Nothing

End Sub

 
Ответить
Сообщение_Boroda_, Практически весь код выложил (касательно открытия файлов). После End with вставлял Set Fd_O = Nothing. Что с обманкой, что без обманки...
[vba]
Public Sub OtkrFile()Dim N_Cnt As IntegerDim Fd_O As FileDialogDim VSI As Variant' Диалог открытия файлаSet Fd_O = Application.FileDialog(msoFileDialogOpen)' Сброс счётчика открытых файловN_Cnt = 0With Fd_O' Только файлы EXCEL    .Filters.Add "Только файлы Excel", "*.xls*"' Задание начальной папки    .InitialFileName = PS_Path    Do        For Each VSI In .SelectedItems' Открытие файла для последующей обработки            Workbooks.Open Filename:=VSI, Origin:=xlWindows' Имя открытого файла            S_Nam = ActiveWorkbook.Name' Приращение счётчика открытых файлов            N_Cnt = N_Cnt + 1' Копирование активного листа в книгу XXXXXXX            ActiveSheet.Copy After:=Workbooks("XXXXXXX.xlsm").Sheets(N_Cnt)' Закрытие активного файла            Workbooks(S_Nam).Close False' Переименование активного листа            ActiveSheet.Name = "ФАЙЛ " & N_Cnt        Next VSI    Loop While .Show <> 0End WithSet Fd_O = NothingEnd Sub
[/vba]

Автор - Homo_Faber
Дата добавления - 27.02.2024 в 11:44
Апострофф Дата: Вторник, 27.02.2024, 15:44 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 467
Репутация: 129 ±
Замечаний: 0% ±

Excel 1997
Homo_Faber,
Application.FileDialog(msoFileDialogOpen).Show
должен идти до обработки выбранных файлов, а не после.
Попробуйте While .Show <> 0 записать после Do, а не после Loop.
 
Ответить
СообщениеHomo_Faber,
Application.FileDialog(msoFileDialogOpen).Show
должен идти до обработки выбранных файлов, а не после.
Попробуйте While .Show <> 0 записать после Do, а не после Loop.

Автор - Апострофф
Дата добавления - 27.02.2024 в 15:44
Homo_Faber Дата: Среда, 28.02.2024, 06:11 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2013
Апострофф, Отлично, помогло!
Спасибо огромное!!!
На остальных форумах никто ничего толком не подсказал...
 
Ответить
СообщениеАпострофф, Отлично, помогло!
Спасибо огромное!!!
На остальных форумах никто ничего толком не подсказал...

Автор - Homo_Faber
Дата добавления - 28.02.2024 в 06:11
Homo_Faber Дата: Среда, 28.02.2024, 06:12 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

2013
Уф, Спасибо всем участвовавшим, тему можно закрывать.
 
Ответить
СообщениеУф, Спасибо всем участвовавшим, тему можно закрывать.

Автор - Homo_Faber
Дата добавления - 28.02.2024 в 06:12
  • Страница 1 из 1
  • 1
Поиск:

Рейтинг@Mail.ru Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!