Страницы: 1
RSS
GetOpenFilename. Как сослаться на элемент массива, Ссылка на объект массива.
 
Здравствуйте. Сразу прошу прощения за глупые вопросы. Я не могу никак правильно сослаться на элемент массива. Пользователь выбирает из диалогового окна несколько книг для обработки. Для этой обработки данных нужно создать переменную для каждой выбранной книги массива (перебор с помощью For each недостаточно). А я даже не могу получить имя 1-ой книги в данном массиве. Заранее большое спасибо.
Код
Sub WhatFilesShouldBeOpened()
Dim varFilesToOpen As Variant
Dim varWb As Variant 
Dim varFirstWbInArray As Variant
Dim x As Variant
Dim strWshName as String

'Вызываем диалог выбора файлов для импорта. varFilesToOpen - переменная массива, в котором содержатся все выбранные книги.
varFilesToOpen = Application.GetOpenFilename(FileFilter:="Excel files (*.xls*), *.xls*", MultiSelect:=True, Title:="Выберите файлы")
If TypeName(varFilesToOpen) = "Boolean" Then
    MsgBox "Не выбрано ни одного файла!"
    Exit Sub
End If

For Each varWb In varFilesToOpen
    Workbooks.Open varWb
Next varWb

'Мне нужно получить имя книги №1 в массиве varFilesToOpen
x=varFilesToOpen(1)
strWshName=Workbooks(x).name
msgbox strWshName
End sub
 
Цитата
Neurosurgeon написал:
strWshName=Workbooks(x).name
а теперь посмотрите, что у Вас в переменной x. Там полный путь к файлу.
Пробуйте хотя бы так получить:
Код
x=Dir(varFilesToOpen(1),16)

хотя я лично все же подошел бы иначе к вопросу - назначал переменных значения прямо в цикле - ведь по какому-то принципу Вы все равно это будете делать. И For Each можно заменить на
Код
For i = lbound(varFilesToOpen) to ubound(varFilesToOpen)

будет сразу и счетчик и номера...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
Sub WhatFilesShouldBeOpened()
Dim varFilesToOpen As Variant
Dim varWb As Variant
Dim varFirstWbInArray As Variant
Dim x As Variant
Dim strWshName As String
 
'Вызываем диалог выбора файлов для импорта. varFilesToOpen - переменная массива, в котором содержатся все выбранные книги.
varFilesToOpen = Application.GetOpenFilename(FileFilter:="Excel files (*.xls*), *.xls*", MultiSelect:=True, Title:="Выберите файлы")
If TypeName(varFilesToOpen) = "Boolean" Then
    MsgBox "Не выбрано ни одного файла!"
    Exit Sub
End If
 
For Each varWb In varFilesToOpen
    Workbooks.Open varWb
Next varWb
 
'Мне нужно получить имя книги №1 в массиве varFilesToOpen
x = varFilesToOpen(1)
strWshName = Dir(varFilesToOpen(1))
MsgBox strWshName
End Sub
Страницы: 1
Наверх