Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Sadma1
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 44
1

Записать в массив относительный путь с именем файла из папки(не зная полный путь папки)

10.04.2019, 15:04. Просмотров 1814. Ответов 7

Наверняка вопрос заезженный, но я не нашел(плохо искал)
Нужно из вложенной папки, из директории, откуда запускается макрос вытащить имена xlsx файлов и запихать их в массив, вместе с относительным путём от файла с макросом. Количество файлов фиксированное.
Чтобы массив получился каким то таким
Visual Basic
1
2
3
g1(0)=ThisWorkbook.Path & “\lala\имя 1файла.xlsx”
g1(1)=ThisWorkbook.Path & “\lala\имя 2файла.xlsx”
‘И т.д.
Добавлено через 37 минут
А вообще лучше, чтобы вылезало окно с выбором папки, и в массив помещались все файлы xlsx из выбранной папки
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2019, 15:04
Ответы с готовыми решениями:

Относительный путь относительно папки
Есть папка (File dir = new File(...)) и есть файл(File f = new File(...)) с абсолютным путём. Надо...

Получить полный путь папки выделенной в проводнике
Здравствуйте. Возникла такая проблема. Необходимо при клике мышкой по папке (или какому либо...

Получить имя файла, зная полный путь
Доброго времени суток. Прошу помощи. Ситуация такова: через opendialog в переменную fname...

Получить имя файла, зная полный путь
В общем у меня такая проблема, у меня в checkedListBox'е есть несколько путей к файлам скажем:...

Получить имя файла, зная его полный путь
есть полный путь к файлу типа C:\Users\Миша\Desktop\Папа ДР\Учитель !\3 вопроса.xml, как мне...

7
Vlad999
3139 / 1926 / 613
Регистрация: 02.11.2012
Сообщений: 4,946
10.04.2019, 15:27 2
Изучайте

Добавлено через 2 минуты
Цитата Сообщение от Sadma1 Посмотреть сообщение
А вообще лучше, чтобы вылезало окно с выбором папки
Это смотрите
0
Sadma1
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 44
10.04.2019, 16:53  [ТС] 3
Vlad999, это я видел, как мне в массив всё запихать? Как в примере выше
0
Vlad999
3139 / 1926 / 613
Регистрация: 02.11.2012
Сообщений: 4,946
10.04.2019, 17:22 4
Лучший ответ Сообщение было отмечено Sadma1 как решение

Решение

пробуйте
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Get_All_File_from_Folder()
Dim g()
    Dim sFolder As String, sFiles As String
    'диалог запроса выбора папки с файлами
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ThisWorkbook.Path
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
    'отключаем обновление экрана, чтобы наши действия не мелькали
    Application.ScreenUpdating = False
    sFiles = Dir(sFolder & "*.xls*")
    Do While sFiles <> ""
        ReDim Preserve g(i)
        g(i) = sFolder & sFiles
        i = i + 1
        sFiles = Dir
    Loop
    'возвращаем ранее отключенное обновление экрана
    Application.ScreenUpdating = True
End Sub
1
10.04.2019, 17:22
Sadma1
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 44
10.04.2019, 23:11  [ТС] 5
Vlad999, Большое спасибо!
А что делает 19-я строчка - sFiles=Dir ?
0
Sadma1
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 44
11.04.2019, 08:24  [ТС] 6
Vlad999, при втором шаге цикла, то есть когда вызывается второй элемент массива вылезает ошибка «subscript our of range”
И просто после вашего цикла в ячейки имена файлов пытался записать
Записываю просто g(0),g(1)...
Первый файл записывается, второй нет
0
Vlad999
3139 / 1926 / 613
Регистрация: 02.11.2012
Сообщений: 4,946
11.04.2019, 09:15 7
Цитата Сообщение от Sadma1 Посмотреть сообщение
при втором шаге цикла, то есть когда вызывается второй элемент массива вылезает ошибка
Это вы о чем?
Цитата Сообщение от Sadma1 Посмотреть сообщение
Первый файл записывается, второй нет
Visual Basic
1
2
3
For i = 0 To UBound(g)
        n = n + 1: Cells(n, 1) = g(i)
Next
у меня все вывело.

Добавлено через 3 минуты
Цитата Сообщение от Sadma1 Посмотреть сообщение
А что делает 19-я строчка - sFiles=Dir ?
присваивается переменной sFiles следующее имя файла из указанной директории.
0
Sadma1
0 / 0 / 0
Регистрация: 04.04.2019
Сообщений: 44
11.04.2019, 10:02  [ТС] 8
Все разобрался
Моя вина
0
11.04.2019, 10:02
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2019, 10:02

Вывод имени файла, зная его полный путь
Подскажите как вывести имя файла. Много чего находил но чисто имени файла например 123.exe такого...

Зная путь к папке с zip архивами распаковать все архивы в свои папки
есть папка, в которой лежат архивы. необходимо при нажатии на кнопку извлечь все архивы(каждый...

Загрузка файла в ТекстБокс и открытие файла, зная его полный путь!
Всем привет! Имеется определенная проблема: ввожу в textbox полный путь к файлу, после сохраняю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru