Как с помощью макроса открыть файл находящийся в этой же папке?
Объясню на примере.
Имеем: Книга1(с нашим макросом), Книга2(его надо открыть).
Оба файла лежат в папке «D:temp».
Если папка постоянна то открывается все очень просто:
Workbooks.Open Filename:="D:tempКнига2.xlsx"
Но, если поменять путь например «D:1temp» то файл уже не откроется.
Вопрос: Как открыть файл когда путь меняется при условии, что знаем имя файла (Книга2) и они лежат в одной и той же папке?
P.S. Если знаете функцию которая вернет путь к первоначальному(тоесть открытому) файлу то подскажите, это тоже решит проблему. Например:
put={функция ворачивающая путь к файлу}
Workbooks.Open Filename:=put & "D:tempКнига2.xlsx"
Заранее при много благодарен.
Workbooks.Open ThisWorkbook.Path & "Книга2.xlsx"
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453
put={функция ворачивающая путь к файлу}
put = ThisWorkbook.Path
put = ActiveWorkbook.Path
putExcel = Application.Path
• В первом примере указан путь к файлу, где содержится сама программа, которая в настоящий момент выполняет код VBA.
• Во втором примере указан путь к активному файлу.
• В третьем примере указан путь к папке, в которой установлен MS Excel. При наличии у Вас нескольких версий, укажет путь к версии, в которой Вы работаете в данный момент.
Может и я на что сгожусь … Если сгодился, можете меня по+благодарить+.
Ukurov
Пользователь
Сообщений: 11
Регистрация: 24.02.2014
#1
19.08.2015 10:54:58
Добрый день!
Есть макрос, который открывает файлы находящиеся по определенному адресу, выглядит это так:
WorkBooks.Open Filename:=»C:ЭкономикаБПфайл.xlsx»
Как сделать так, чтобы при перемещении папки «БП» или изменении имени папки макрос всё равно открывал файлы, находящиеся в этой папке (т.е. открывал файлы в текущей папке)?
Skip to content
Как открыть все рабочие книги в папке
На чтение 2 мин. Просмотров 3.5k.
Что делает макрос: Представьте, вы написали классный макрос, который автоматизирует работу одного Excel- файла. Теперь проблема заключается в том, что вам нужно перейти в папку, открыть каждую
книгу, запустить макрос, сохранить изменения, закрыть книгу, а затем открыть следующую.
Открытие каждой рабочей книги в папке, как правило, ручной процесс, который отнимает много времени.
Этот макрос решает проблему, как открыть все рабочие книги папки.
Содержание
- Как макрос работает
- Код макроса
- Как работает этот код
- Как использовать
Как макрос работает
В этом макросе, мы используем функцию Dir. Функция Dir возвращает строку, которая представляет собой имя файла. С её помощью в указанной папке мы возьмём имя каждого файла (с расширением “.xlsx”), затем будем открывать каждый файл, запускать макрос и, наконец, закрывать файл после сохранения.
Код макроса
Sub OtkritVseKnigi() 'Шаг 1:Объявляем переменные Dim MyFiles As String 'Шаг 2: Укажите нужную папку MyFiles = Dir("C:Temp*.xlsx") Do While MyFiles <> “” 'Шаг 3: Открываем файлы один за другим Workbooks.Open "C:Temp" & MyFiles 'Код макроса с действиями MsgBox ActiveWorkbook.Name ActiveWorkbook.Close SaveChanges:=True 'Шаг 4: Следующий файл в папке MyFiles = Dir Loop End Sub
Как работает этот код
- Объявляем переменную MyFiles (тип строчный), которая будет фиксировать имя каждого файла.
- В шаге 2, макрос использует функцию DIR, чтобы указать Тип файла и адрес папки. Обратите внимание, что код ищет файлы в формате xlsx. Это означает, что только .xlsx файлы будут передаваться. Если вы ищете .xls файлы, вам необходимо изменить расширение.
- Открываем файл, делаем некоторые действия (вы должны поместить в код макроса требуемые действия), а затем мы сохраняем и закрываем файл. В этом простом примере, мы вызываем окно с сообщением, чтобы показать имя каждого файла.
- Ищем снова по кругу, чтобы найти больше файлов. Если нет файлов, переменная MyFiles пустая.
Если это так, то цикл и макрос завершается.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код во вновь созданном модуле.
0 / 0 / 0 Регистрация: 21.10.2015 Сообщений: 32 |
|
1 |
|
Открытие файлов из папки с внесением изменений07.11.2017, 18:28. Показов 1977. Ответов 5
Добрый день! Добавлено через 30 минут
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
07.11.2017, 18:42 |
2 |
на всех листах сделать автозамену одного символа «.» на «,» — зачем? У меня смутные подозрения что незачем…
0 |
akaDemik_ua 0 / 0 / 0 Регистрация: 21.10.2015 Сообщений: 32 |
||||||||
08.11.2017, 12:45 [ТС] |
3 |
|||||||
зачем? при подведении итогов, данные ячейки не считают числом, будет 0 вместо необходимой суммы Добавлено через 17 часов 54 минуты
тут удобно что не надо указывать полный путь к папке, открываться должны все файлы из той папки, где находится файл с макросом, но проблема в том, что *.xlsx не воспринимается системой (файл не открывается)
тут удобно что открываются все файлы из той папки, где находится файл с макросом, но проблема в том, что необходимо указывать полный путь и то, что файл не закрывается с сохранением
0 |
ЮляБ 1 / 1 / 0 Регистрация: 04.07.2019 Сообщений: 38 |
||||
22.07.2019, 10:01 |
4 |
|||
Доброе утро! Необходима ваша помощь.
Этот код открывает папку, позволяет выбрать в ней любую другую папку и записывает названия всех файлов на лист. Но мне необходимо, чтобы захода в общую папку и выбора интересующей меня папки, поочерёдно открывались файлы, лежащие в ней.
0 |
Daller 21 / 12 / 10 Регистрация: 12.07.2019 Сообщений: 47 |
||||
22.07.2019, 16:10 |
5 |
|||
Добавил пример где пример? Добавлено через 59 минут
А для суммирования нужны примеры Ваши
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
22.07.2019, 16:53 |
6 |
Daller, замену 2 года тому назад просили
0 |
Представьте, вы написали классный макрос, который автоматизирует работу одного Excel-файла. Теперь проблема заключается в том, что вам нужно перейти в папку, открыть каждую книгу, запустить макрос, сохранить изменения, закрыть книгу, а затем открыть следующую. Открытие каждой рабочей книги в папке, как правило, ручной процесс, который отнимает много времени. Этот макрос решает проблему, как открыть все рабочие книги папки.
В этом макросе, мы используем функцию Dir. Функция Dir возвращает строку, которая представляет собой имя файла. С её помощью в указанной папке мы возьмём имя каждого файла (с расширением “.xlsx”), затем будем открывать каждый файл, запускать макрос и, наконец, закрывать файл после сохранения.