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

Вход

Регистрация

Напомнить пароль

 

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

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

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

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

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


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

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

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

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

2003; 2007; 2010; 2013 RUS
Попробуйте после цикла обнулить переменную
[vba]
Код
Set Fd_O = Nothing
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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
Попробуйте после цикла обнулить переменную

Пробовал - не помогает...
 
Ответить
Сообщение
Попробуйте после цикла обнулить переменную

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

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

2003; 2007; 2010; 2013 RUS
Пробовал - не помогает...


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


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


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

Автор - _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. Что с обманкой, что без обманки...
[vba]
Код

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
[/vba]
 
Ответить
Сообщение_Boroda_, Практически весь код выложил (касательно открытия файлов). После End with вставлял Set Fd_O = Nothing. Что с обманкой, что без обманки...
[vba]
Код

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
[/vba]

Автор - Homo_Faber
Дата добавления - 27.02.2024 в 11:44
Апострофф Дата: Вторник, 27.02.2024, 15:44 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 458
Репутация: 126 ±
Замечаний: 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
Поиск:

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