Добрый вечер, уважаемые форумчане! Помогите, пожалуйста, разобраться со следующим вопросом. Обрабатываю 2 книги макросом. Жму на кнопку, выбираю для обработки первую книгу. Затем, после обработки первой книги, выбираю вторую для обработки. Выбор книг последовательно осуществляется с помощью стандартных диалоговых окон. Мне бы очень хотелось, чтобы можно было сразу выбирать несколько книг для обработки и обрабатывать их вместе. То есть, нажал на кнопку "Обзор файла 1" - выбрал первую книгу, нажал на "Обзор файла 2" - выбрал вторую книгу, нажал на кнопку "Обработка" (в примере просто нарисована кнопка без кода) и книги начали обрабатываться. Прикрутить диалоговые окна к этим кнопкам не проблема, но дело в том, что я не знаю, как сделать так, чтобы в поле рядом с кнопками отражался путь выбранных книг. Заранее, огромное Вам спасибо за любую помощь!
Добрый вечер, уважаемые форумчане! Помогите, пожалуйста, разобраться со следующим вопросом. Обрабатываю 2 книги макросом. Жму на кнопку, выбираю для обработки первую книгу. Затем, после обработки первой книги, выбираю вторую для обработки. Выбор книг последовательно осуществляется с помощью стандартных диалоговых окон. Мне бы очень хотелось, чтобы можно было сразу выбирать несколько книг для обработки и обрабатывать их вместе. То есть, нажал на кнопку "Обзор файла 1" - выбрал первую книгу, нажал на "Обзор файла 2" - выбрал вторую книгу, нажал на кнопку "Обработка" (в примере просто нарисована кнопка без кода) и книги начали обрабатываться. Прикрутить диалоговые окна к этим кнопкам не проблема, но дело в том, что я не знаю, как сделать так, чтобы в поле рядом с кнопками отражался путь выбранных книг. Заранее, огромное Вам спасибо за любую помощь!Leojse
как сделать так, чтобы в поле рядом с кнопками отражался путь выбранных книг
А просто разрешить мультиселект в диалоге не вариант? И второй кнопки не надо. [vba]
Код
Private Sub CommandButton1_Click() Dim x, a(1 To 2) With Application.FileDialog(msoFileDialogFilePicker) .Title = "Выберите файл 1" .AllowMultiSelect = True .Filters.Clear .Filters.Add "Файл 1", "*.xls*" If .Show = 0 Then Exit Sub End If For x = 1 To IIf(.SelectedItems.Count > 1, 2, 1) a(x) = .SelectedItems(x) Me.Controls("TextBox" & x) = a(x) Workbooks.Open a(x) Next End With End Sub
как сделать так, чтобы в поле рядом с кнопками отражался путь выбранных книг
А просто разрешить мультиселект в диалоге не вариант? И второй кнопки не надо. [vba]
Код
Private Sub CommandButton1_Click() Dim x, a(1 To 2) With Application.FileDialog(msoFileDialogFilePicker) .Title = "Выберите файл 1" .AllowMultiSelect = True .Filters.Clear .Filters.Add "Файл 1", "*.xls*" If .Show = 0 Then Exit Sub End If For x = 1 To IIf(.SelectedItems.Count > 1, 2, 1) a(x) = .SelectedItems(x) Me.Controls("TextBox" & x) = a(x) Workbooks.Open a(x) Next End With End Sub
KuklP, спасибо за совет! Но дело в том, что с двух книг собираются данные в третью книгу (в третьей книге и содержится код обработки). После сборки данных с книг, идет обработка данных. Затем, данные этих книг обрабатываются по разным принципам. Если разрешить мультиселект, то выбираю сразу две книги. Но как в таком случае указывать, какие данные из какой книги копировать и затем обрабатывать в третьей (сводной) книге? У двух обрабатываемых книг всегда разные имена, разное количество листов и в третьей книге данные книг-источников обрабатываются по-разному.
KuklP, спасибо за совет! Но дело в том, что с двух книг собираются данные в третью книгу (в третьей книге и содержится код обработки). После сборки данных с книг, идет обработка данных. Затем, данные этих книг обрабатываются по разным принципам. Если разрешить мультиселект, то выбираю сразу две книги. Но как в таком случае указывать, какие данные из какой книги копировать и затем обрабатывать в третьей (сводной) книге? У двух обрабатываемых книг всегда разные имена, разное количество листов и в третьей книге данные книг-источников обрабатываются по-разному.Leojse
Да не вопрос, если вычислить что-куда не можете: [vba]
Код
Private Sub CommandButton1_Click() With Application.FileDialog(msoFileDialogFilePicker) .Title = "Выберите файл 1" .AllowMultiSelect = True .Filters.Clear .Filters.Add "Файл 1", "*.xls*" If .Show = 0 Then Exit Sub End If Me.Controls("TextBox1") = .SelectedItems(1) Workbooks.Open .SelectedItems(1) End With End Sub
[/vba]
Да не вопрос, если вычислить что-куда не можете: [vba]
Код
Private Sub CommandButton1_Click() With Application.FileDialog(msoFileDialogFilePicker) .Title = "Выберите файл 1" .AllowMultiSelect = True .Filters.Clear .Filters.Add "Файл 1", "*.xls*" If .Show = 0 Then Exit Sub End If Me.Controls("TextBox1") = .SelectedItems(1) Workbooks.Open .SelectedItems(1) End With End Sub
Простите, пожалуйста, но снова прошу Вас о помощи. Подобрал файлы в пользовательскую форму, здесь всё хорошо. [vba]
Код
Private Sub CommandButton1_Click() With Application.FileDialog(msoFileDialogFilePicker) .Title = "Выберите файл 1" .AllowMultiSelect = True .Filters.Clear .Filters.Add "Файл 1", "*.xls*" If .Show = 0 Then Exit Sub End If Me.Controls("TextBox1") = .SelectedItems(1) End With End Sub
[/vba] [vba]
Код
Private Sub CommandButton2_Click() With Application.FileDialog(msoFileDialogFilePicker) .Title = "Выберите файл 2" .AllowMultiSelect = True .Filters.Clear .Filters.Add "Файл 2", "*.xls*" If .Show = 0 Then Exit Sub End If Me.Controls("TextBox2") = .SelectedItems(1) End With End Sub
[/vba] Затем, когда я нажимаю на кнопку "Обработка файлов" (на нее отдельный код), выдается ошибка, что невозможно найти файл. Я понимаю, что после нажатия на кнопки "Файл 1" и "Файл 2" переменные освобождаются. Подскажите, пожалуйста, а как снова обратиться к книгам, которые я выбрал ранее по кнопкам?
Простите, пожалуйста, но снова прошу Вас о помощи. Подобрал файлы в пользовательскую форму, здесь всё хорошо. [vba]
Код
Private Sub CommandButton1_Click() With Application.FileDialog(msoFileDialogFilePicker) .Title = "Выберите файл 1" .AllowMultiSelect = True .Filters.Clear .Filters.Add "Файл 1", "*.xls*" If .Show = 0 Then Exit Sub End If Me.Controls("TextBox1") = .SelectedItems(1) End With End Sub
[/vba] [vba]
Код
Private Sub CommandButton2_Click() With Application.FileDialog(msoFileDialogFilePicker) .Title = "Выберите файл 2" .AllowMultiSelect = True .Filters.Clear .Filters.Add "Файл 2", "*.xls*" If .Show = 0 Then Exit Sub End If Me.Controls("TextBox2") = .SelectedItems(1) End With End Sub
[/vba] Затем, когда я нажимаю на кнопку "Обработка файлов" (на нее отдельный код), выдается ошибка, что невозможно найти файл. Я понимаю, что после нажатия на кнопки "Файл 1" и "Файл 2" переменные освобождаются. Подскажите, пожалуйста, а как снова обратиться к книгам, которые я выбрал ранее по кнопкам?Leojse