Открытие файла макросом excel в этой же папке

Как с помощью макроса открыть файл находящийся в этой же папке?
Объясню на примере.
Имеем: Книга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- файла. Теперь проблема заключается в том, что вам нужно перейти в папку, открыть каждую
книгу, запустить макрос, сохранить изменения, закрыть книгу, а затем открыть следующую.
Открытие каждой рабочей книги в папке, как правило, ручной процесс, который отнимает много времени.
Этот макрос решает проблему, как открыть все рабочие книги папки.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как работает этот код
  4. Как использовать

Как макрос работает

В этом макросе, мы используем функцию 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

Как работает этот код

  1. Объявляем переменную MyFiles (тип строчный), которая будет фиксировать имя каждого файла.
  2. В шаге 2, макрос использует функцию DIR, чтобы указать Тип файла и адрес папки. Обратите внимание, что код ищет файлы в формате xlsx. Это означает, что только .xlsx файлы будут передаваться. Если вы ищете .xls файлы, вам необходимо изменить расширение.
  3. Открываем файл, делаем некоторые действия (вы должны поместить в код макроса требуемые действия), а затем мы сохраняем и закрываем файл. В этом простом примере, мы вызываем окно с сообщением, чтобы показать имя каждого файла.
  4. Ищем снова по кругу, чтобы найти больше файлов. Если нет файлов, переменная MyFiles пустая.
    Если это так, то цикл и макрос завершается.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код во вновь созданном модуле.

0 / 0 / 0

Регистрация: 21.10.2015

Сообщений: 32

1

Открытие файлов из папки с внесением изменений

07.11.2017, 18:28. Показов 1977. Ответов 5


Студворк — интернет-сервис помощи студентам

Добрый день!
Есть один файл, в котором должен быть макрос, открывающий другие файлы и вносящий в них изменения:
Файлы, которые необходимо открыть находятся в той же папке что и файл с макросом, про них точно известно что они могут иметь разные названия, но точно Excel. Единственное, файлы могут иметь расширение *.xls и *.xlsx. Изменения в открытых файлах, необходимо сделать: по всей книге, на всех листах сделать автозамену одного символа «.» на «,»
Файлы перед закрытием сохранить.
Нашел у себя отрывок старого кода, но он не подходит…

Добавлено через 30 минут
Забыл добавить, в файле с макросом, необходимо подведение итогов по нескольким ячейкам из тех файлов, что открываются
Добавил пример



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

07.11.2017, 18:42

2

Цитата
Сообщение от akaDemik_ua
Посмотреть сообщение

на всех листах сделать автозамену одного символа «.» на «,»

— зачем? У меня смутные подозрения что незачем…



0



akaDemik_ua

0 / 0 / 0

Регистрация: 21.10.2015

Сообщений: 32

08.11.2017, 12:45

 [ТС]

3

Цитата
Сообщение от Hugo121
Посмотреть сообщение

зачем?

при подведении итогов, данные ячейки не считают числом, будет 0 вместо необходимой суммы

Добавлено через 17 часов 54 минуты
Нашел 2 примера, но не знаю как их совместить…
Вариант1.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub BooksOpen()
Dim srcBook
Set wb = ThisWorkbook
 
' Открываем
Dim oFileSystemObject As Object: Set oFileSystemObject = CreateObject("Scripting.FileSystemObject")
If oFileSystemObject.FileExists(wb.Path & "*.xls") Then
Set srcBook = Workbooks.Open(Filename:=wb.Path & "*.xls", ReadOnly:=False, UpdateLinks:=0)
' Меняем точку на запятую
                    Cells.Replace ".", ".", xlPart
                    Cells.Replace ",", ".", xlPart
    srcBook.Close SaveChanges:=True
End If
 
If oFileSystemObject.FileExists(wb.Path & "test1.xlsx") Then
Set srcBook = Workbooks.Open(Filename:=wb.Path & "test1.xlsx", ReadOnly:=False, UpdateLinks:=0)
                    Cells.Replace ".", ".", xlPart
                    Cells.Replace ",", ".", xlPart
    srcBook.Close SaveChanges:=True
End If
End Sub

тут удобно что не надо указывать полный путь к папке, открываться должны все файлы из той папки, где находится файл с макросом, но проблема в том, что *.xlsx не воспринимается системой (файл не открывается)
Вариант 2.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub BooksOpen2()
    Dim MyName As String
    Dim MyPath As String
    Dim sPath As String
    Dim srcBook
        MyPath = "C:VBA"
        MyName = Dir(MyPath & "*.xlsx")
         Do While MyName <> ""
            sPath = MyPath + MyName
            Excel.Application.Workbooks.Open sPath
            MyName = Dir
                    Cells.Replace ".", ".", xlPart
                    Cells.Replace ",", ".", xlPart
         Loop
End Sub

тут удобно что открываются все файлы из той папки, где находится файл с макросом, но проблема в том, что необходимо указывать полный путь и то, что файл не закрывается с сохранением



0



ЮляБ

1 / 1 / 0

Регистрация: 04.07.2019

Сообщений: 38

22.07.2019, 10:01

4

Доброе утро! Необходима ваша помощь.
Мне нужно написать макрос, который открывает папку и уже из нее открывает поочерёдно файлы.
Вот что я написала:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub CollectAll()
Dim sFolder As String
With Aplication.FileDialog(msoFileDialogFolderPicker)
       .InitialFileName = "путь"
       sFolder = .SelectedItems(1)
       iTempFileName = Dir(sFolder & "*")
End With
Set BazaWb = ThisWorkbook
t=3
Do While iTempFileName <> ""
     Set BazaSht = BazaWb.Sheets("Лист1")
     BazaSht.Cells(t,1) = iTempFileName
     t = t + 1
     iTempFileName = Dir
Loop
End Sub

Этот код открывает папку, позволяет выбрать в ней любую другую папку и записывает названия всех файлов на лист. Но мне необходимо, чтобы захода в общую папку и выбора интересующей меня папки, поочерёдно открывались файлы, лежащие в ней.
Когда добавляю With .Workbooks. Open _ ругается на Workbook
Подскажите, что делаю не так и как правильно?



0



Daller

21 / 12 / 10

Регистрация: 12.07.2019

Сообщений: 47

22.07.2019, 16:10

5

Цитата
Сообщение от akaDemik_ua
Посмотреть сообщение

Добавил пример

где пример?

Добавлено через 59 минут
akaDemik_ua,

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub open_files()
Dim fldr As String, d As String, Current As Worksheet
fldr = ActiveWorkbook.Path & ""
a = ActiveWorkbook.Name
d = Dir(fldr & "*")
    Do While d <> "" And d <> a
        Workbooks.Open Filename:=fldr & d
        For Each Current In Worksheets
            Current.Cells.Replace ".", ","
        Next Current
        ActiveWorkbook.Close True
    d = Dir
    Loop
End Sub

А для суммирования нужны примеры Ваши



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

22.07.2019, 16:53

6

Daller, замену 2 года тому назад просили



0



Представьте, вы написали классный макрос, который автоматизирует работу одного Excel-файла. Теперь проблема заключается в том, что вам нужно перейти в папку, открыть каждую книгу, запустить макрос, сохранить изменения, закрыть книгу, а затем открыть следующую. Открытие каждой рабочей книги в папке, как правило, ручной процесс, который отнимает много времени. Этот макрос решает проблему, как открыть все рабочие книги папки. 

В этом макросе, мы используем функцию Dir. Функция Dir возвращает строку, которая представляет собой имя файла. С её помощью в указанной папке мы возьмём имя каждого файла (с расширением “.xlsx”), затем будем открывать каждый файл, запускать макрос и, наконец, закрывать файл после сохранения. 

Понравилась статья? Поделить с друзьями:
  • Открытие файла в режиме защищенного просмотра зависает excel
  • Открытие файла word секунд
  • Открытие таблиц excel онлайн
  • Открытие таблиц excel в разных окнах
  • Открытие ссылок по умолчанию excel