это мой первый пост. Я хотел бы иметь код, который позволил бы пользователю выбрать файл с помощью filedialog, а затем заполнить имена листов из файла для пользовательской формы и скопировать выбранный лист в книгу с кодом.
Private wbSource As Workbook
Private wsSource As Worksheet
Private Sub UserForm_Initialize()
Dim I As Long
Dim filedlg As FileDialog
Set filedlg = Application.FileDialog(msoFileDialogFilePicker)
With filedlg
.Title = "Please select a file to list Sheets from"
.InitialFileName = ThisWorkbook.Path
.ButtonName = "Select"
If .Show <> -1 Then End
End With
Set wbSource = Workbooks.Open(filedlg.SelectedItems(1))
Me.ComboBox1.Clear
With wbSource
For I = 1 To .Worksheets.Count
Me.ComboBox1.AddItem Sheets(I).Name
Next
End With
End Sub
Private Sub ComboBox1_Click()
Set wsSource = wbSource.Worksheets(Me.ComboBox1.Value)
wsSource.Copy ThisWorkbook.Sheets(Sheets.Count)
wbSource.Close SaveChanges:=False
Unload Me
End Sub
Код работает до тех пор, пока Excel не попытается скопировать лист, возникает ошибка времени выполнения 9 - нижний индекс выходит за пределы допустимого диапазона. Я объявил переменные неправильно?