Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Копирование листа в другую книгу текущей папки - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование листа в другую книгу текущей папки (Макросы/Sub)
Копирование листа в другую книгу текущей папки
den45444 Дата: Четверг, 30.07.2015, 10:02 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Помогите написать макрос.
Задача следующая:
- имеется 2 файла в папке
- открываем 2 файла;
- теперь нужно с одного файла, где будет установлена кнопка макроса "копировать", скопировать лист на другой открытый файл под названием "Общие файлы".

Кратко говоря, мне нужно скопировать лист с одной книги на другую, но только процесс должен происходить в этой же папке.
Все это для того, чтобы я мог скопировать данные файлы в другую папку и там же совершить такое же действие без указания полного пути к файлу.

Думаю файлы для примеров тут не нужны.
 
Ответить
СообщениеДобрый день.
Помогите написать макрос.
Задача следующая:
- имеется 2 файла в папке
- открываем 2 файла;
- теперь нужно с одного файла, где будет установлена кнопка макроса "копировать", скопировать лист на другой открытый файл под названием "Общие файлы".

Кратко говоря, мне нужно скопировать лист с одной книги на другую, но только процесс должен происходить в этой же папке.
Все это для того, чтобы я мог скопировать данные файлы в другую папку и там же совершить такое же действие без указания полного пути к файлу.

Думаю файлы для примеров тут не нужны.

Автор - den45444
Дата добавления - 30.07.2015 в 10:02
SLAVICK Дата: Четверг, 30.07.2015, 10:09 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Посмотрите здесь вчера была аналогичная тема.
Или давайте примеры <_< rules


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеПосмотрите здесь вчера была аналогичная тема.
Или давайте примеры <_< rules

Автор - SLAVICK
Дата добавления - 30.07.2015 в 10:09
den45444 Дата: Четверг, 30.07.2015, 10:57 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, Вот примеры файлов.
К сообщению приложен файл: 8452357.xlsx (8.9 Kb) · 4999630.xlsx (8.6 Kb)
 
Ответить
СообщениеSLAVICK, Вот примеры файлов.

Автор - den45444
Дата добавления - 30.07.2015 в 10:57
Udik Дата: Четверг, 30.07.2015, 11:22 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Не понял для чего вторую книгу вручную открывать
[vba]
Код

' работает при закрытой целевой книге
Sub Main()
       Const strName As String = "1.xlsx"
       Const strNameL As String = "смета"

       Dim str1 As String
          
        str1 = ThisWorkbook.Path & Application.PathSeparator
        Workbooks.Open Filename:=str1  & strName
           
        With Workbooks(strName)
           ThisWorkbook.Sheets(strNameL).Copy Before:=.Sheets(1)
           .Save
           .Close 0
       End With
End Sub

[/vba]
[p.s.]Если лист с именем есть, к нему цифра автоматом добавляется


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Четверг, 30.07.2015, 11:30
 
Ответить
СообщениеНе понял для чего вторую книгу вручную открывать
[vba]
Код

' работает при закрытой целевой книге
Sub Main()
       Const strName As String = "1.xlsx"
       Const strNameL As String = "смета"

       Dim str1 As String
          
        str1 = ThisWorkbook.Path & Application.PathSeparator
        Workbooks.Open Filename:=str1  & strName
           
        With Workbooks(strName)
           ThisWorkbook.Sheets(strNameL).Copy Before:=.Sheets(1)
           .Save
           .Close 0
       End With
End Sub

[/vba]
[p.s.]Если лист с именем есть, к нему цифра автоматом добавляется

Автор - Udik
Дата добавления - 30.07.2015 в 11:22
SLAVICK Дата: Четверг, 30.07.2015, 11:38 | Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Вот
Макрос в книге "Главная"
Копирует лист "Смета" из книги1 в книгу2 :D
Книги переименуйте как Вам нужно
[vba]
Код
Sub Макрос1()
Dim wb1 As Workbook, wb2 As Workbook, Mwb As Workbook, p$
Set Mwb = ThisWorkbook
p = Mwb.Path
Set wb1 = Workbooks.Open(p & "/" & "Книга1.xlsx")
Set wb2 = Workbooks.Open(p & "/" & "Книга2.xlsx")
wb1.Sheets("Смета").Copy Before:=wb2.Sheets(1)

wb1.Close False: wb2.Close True
End Sub
[/vba]
К сообщению приложен файл: 5546.zip (27.9 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 30.07.2015, 11:41
 
Ответить
СообщениеВот
Макрос в книге "Главная"
Копирует лист "Смета" из книги1 в книгу2 :D
Книги переименуйте как Вам нужно
[vba]
Код
Sub Макрос1()
Dim wb1 As Workbook, wb2 As Workbook, Mwb As Workbook, p$
Set Mwb = ThisWorkbook
p = Mwb.Path
Set wb1 = Workbooks.Open(p & "/" & "Книга1.xlsx")
Set wb2 = Workbooks.Open(p & "/" & "Книга2.xlsx")
wb1.Sheets("Смета").Copy Before:=wb2.Sheets(1)

wb1.Close False: wb2.Close True
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 30.07.2015 в 11:38
den45444 Дата: Четверг, 30.07.2015, 14:00 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, Udik, благодарю вас.

У меня книга1 с поддержкой макросов (xlsm), а книга2 без макросов (xlsx)
Книга2 предназначена для отправки заказчикам.
Как только я отправил заказчику книгу2, мне нужно ее скопировать в книгу1 для разных доработок.
Т.е. я вызываю макрос с книги1 и смета копируется туда же где находится макрос.
Такое вообще возможно?
 
Ответить
СообщениеSLAVICK, Udik, благодарю вас.

У меня книга1 с поддержкой макросов (xlsm), а книга2 без макросов (xlsx)
Книга2 предназначена для отправки заказчикам.
Как только я отправил заказчику книгу2, мне нужно ее скопировать в книгу1 для разных доработок.
Т.е. я вызываю макрос с книги1 и смета копируется туда же где находится макрос.
Такое вообще возможно?

Автор - den45444
Дата добавления - 30.07.2015 в 14:00
Udik Дата: Четверг, 30.07.2015, 14:17 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Э, так оно же итак в книге с макросом есть, или вам нужна копия листа для дальнейших изменений?


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Четверг, 30.07.2015, 14:19
 
Ответить
СообщениеЭ, так оно же итак в книге с макросом есть, или вам нужна копия листа для дальнейших изменений?

Автор - Udik
Дата добавления - 30.07.2015 в 14:17
SLAVICK Дата: Четверг, 30.07.2015, 14:28 | Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Так?

[vba]
Код
Sub Макрос1()
Dim wb1 As Workbook, wb2 As Workbook, Mwb As Workbook, p$
Set Mwb = ThisWorkbook
p = Mwb.Path
Set wb1 = Workbooks.Open(p & "/" & "Книга2.xlsx")
wb1.Sheets("Смета").Copy Before:=Mwb.Sheets(1)

wb1.Close False
End Sub
[/vba]
К сообщению приложен файл: 3301541.zip (22.0 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 30.07.2015, 14:30
 
Ответить
СообщениеТак?

[vba]
Код
Sub Макрос1()
Dim wb1 As Workbook, wb2 As Workbook, Mwb As Workbook, p$
Set Mwb = ThisWorkbook
p = Mwb.Path
Set wb1 = Workbooks.Open(p & "/" & "Книга2.xlsx")
wb1.Sheets("Смета").Copy Before:=Mwb.Sheets(1)

wb1.Close False
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 30.07.2015 в 14:28
den45444 Дата: Четверг, 30.07.2015, 14:31 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Udik, сейчас пример нормально сформирую
 
Ответить
СообщениеUdik, сейчас пример нормально сформирую

Автор - den45444
Дата добавления - 30.07.2015 в 14:31
den45444 Дата: Четверг, 30.07.2015, 14:48 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Udik, SLAVICK, вот пример
К сообщению приложен файл: 5872057.rar (18.9 Kb)
 
Ответить
СообщениеUdik, SLAVICK, вот пример

Автор - den45444
Дата добавления - 30.07.2015 в 14:48
den45444 Дата: Четверг, 30.07.2015, 14:52 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
SLAVICK, почти так, но кнопка должна быть в книге2.xlsx
Эта кнопка должна вызывать макрос с книги1 и копировать лист туда же где находится макрос.
 
Ответить
СообщениеSLAVICK, почти так, но кнопка должна быть в книге2.xlsx
Эта кнопка должна вызывать макрос с книги1 и копировать лист туда же где находится макрос.

Автор - den45444
Дата добавления - 30.07.2015 в 14:52
SLAVICK Дата: Четверг, 30.07.2015, 14:59 | Сообщение № 12
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
SLAVICK, почти так, но кнопка должна быть в книге2.xlsx

В формате .xlsx нельзя хранить макросы.
Как вариант указать кнопке книгу 1... но тогда она "Запомнит" расположение файла, и будет всегда пытаться его открыть... именно из этой папки

Поэтому нужно указывать ссылку на файл с макросом(третий файл ), который всегда будет лежать в одном месте(например личная книга макросов), и менять макрос, чтобы смотрел путь не к своей папке, а к книге, из которой его вызвали... но помойму это уже другой вопрос - другая тема :D

Или вариант два:
Нужно открыть самостоятельно два файла и запустить макрос из Книга1.xlsm, который из открытой книги2.xlsx скопирует нужный лист. :D


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Четверг, 30.07.2015, 15:05
 
Ответить
Сообщение
SLAVICK, почти так, но кнопка должна быть в книге2.xlsx

В формате .xlsx нельзя хранить макросы.
Как вариант указать кнопке книгу 1... но тогда она "Запомнит" расположение файла, и будет всегда пытаться его открыть... именно из этой папки

Поэтому нужно указывать ссылку на файл с макросом(третий файл ), который всегда будет лежать в одном месте(например личная книга макросов), и менять макрос, чтобы смотрел путь не к своей папке, а к книге, из которой его вызвали... но помойму это уже другой вопрос - другая тема :D

Или вариант два:
Нужно открыть самостоятельно два файла и запустить макрос из Книга1.xlsm, который из открытой книги2.xlsx скопирует нужный лист. :D

Автор - SLAVICK
Дата добавления - 30.07.2015 в 14:59
den45444 Дата: Четверг, 30.07.2015, 15:02 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Set wb1 = Workbooks.Open(p & "/" & "Книга2.xlsx")

Название книги будет постоянно менятся
 
Ответить
Сообщение
Set wb1 = Workbooks.Open(p & "/" & "Книга2.xlsx")

Название книги будет постоянно менятся

Автор - den45444
Дата добавления - 30.07.2015 в 15:02
den45444 Дата: Четверг, 30.07.2015, 15:11 | Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Или вариант два:
Нужно открыть самостоятельно два файла и запустить макрос из Книга1.xlsm, который из открытой книги2.xlsx скопирует нужный лист

Неужели нет больше вариантов?
 
Ответить
Сообщение
Или вариант два:
Нужно открыть самостоятельно два файла и запустить макрос из Книга1.xlsm, который из открытой книги2.xlsx скопирует нужный лист

Неужели нет больше вариантов?

Автор - den45444
Дата добавления - 30.07.2015 в 15:11
Udik Дата: Четверг, 30.07.2015, 15:16 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
В файле без макросов видим:
Цитата

ДАННЫЙ ЛИСТ БЕЗ МАКРОСА.
ВЫШЕСТОЯЩАЯ КНОПКА ВЫЗЫВАЕТ МАКРОС С ГЛАВНОЙ КНИГИ

как то на мой взгляд странно. %) Даже не знаю, как такое запускать

а код копии листа из Сметный расчет.xlsx в ГЛАВНАЯ.xlsm, для файла с макросом
[vba]
Код

Sub getList()
     Const strName As String = "Сметный расчет.xlsx"
     Const strNameL As String = "СМЕТА"

     Dim str1 As String
          
         str1 = ThisWorkbook.Path & Application.PathSeparator
         Workbooks.Open Filename:=str1 & strName
          
         With Workbooks(strName)
         .Sheets(strNameL).Copy Before:=ThisWorkbook.Sheets(1)
         .Save
         .Close 0
     End With
End Sub

[/vba]


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com


Сообщение отредактировал Udik - Четверг, 30.07.2015, 15:18
 
Ответить
СообщениеВ файле без макросов видим:
Цитата

ДАННЫЙ ЛИСТ БЕЗ МАКРОСА.
ВЫШЕСТОЯЩАЯ КНОПКА ВЫЗЫВАЕТ МАКРОС С ГЛАВНОЙ КНИГИ

как то на мой взгляд странно. %) Даже не знаю, как такое запускать

а код копии листа из Сметный расчет.xlsx в ГЛАВНАЯ.xlsm, для файла с макросом
[vba]
Код

Sub getList()
     Const strName As String = "Сметный расчет.xlsx"
     Const strNameL As String = "СМЕТА"

     Dim str1 As String
          
         str1 = ThisWorkbook.Path & Application.PathSeparator
         Workbooks.Open Filename:=str1 & strName
          
         With Workbooks(strName)
         .Sheets(strNameL).Copy Before:=ThisWorkbook.Sheets(1)
         .Save
         .Close 0
     End With
End Sub

[/vba]

Автор - Udik
Дата добавления - 30.07.2015 в 15:16
den45444 Дата: Четверг, 30.07.2015, 15:25 | Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
а код копии листа из Сметный расчет.xlsx в ГЛАВНАЯ.xlsm, для файла с макросом

А если книга Сметный расчет меняет свое название? Нельзя ли скопировать лист открытого файла?
т.е. я могу изменить название сметного расчета и тогда макрос не найдет данный файл. Нельзя ли указать какую-либо связь между ними?
 
Ответить
Сообщение
а код копии листа из Сметный расчет.xlsx в ГЛАВНАЯ.xlsm, для файла с макросом

А если книга Сметный расчет меняет свое название? Нельзя ли скопировать лист открытого файла?
т.е. я могу изменить название сметного расчета и тогда макрос не найдет данный файл. Нельзя ли указать какую-либо связь между ними?

Автор - den45444
Дата добавления - 30.07.2015 в 15:25
den45444 Дата: Четверг, 30.07.2015, 15:40 | Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В формате .xlsx нельзя хранить макросы.

Хорошо. Допустим я сохранил в xlms.
Открываю его.
Как же теперь с этого файла скопировать в другую книгу, но при этом не указывать в макросе название этого файла, потому что название файла может изменится.
 
Ответить
Сообщение
В формате .xlsx нельзя хранить макросы.

Хорошо. Допустим я сохранил в xlms.
Открываю его.
Как же теперь с этого файла скопировать в другую книгу, но при этом не указывать в макросе название этого файла, потому что название файла может изменится.

Автор - den45444
Дата добавления - 30.07.2015 в 15:40
Udik Дата: Четверг, 30.07.2015, 15:47 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
потому что название файла

а если название листа сменится? Как вариант можно завести лист и прописывать названия в нём, либо ещё каким способом давать проге знать, какой файл надо открыть.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
Сообщение
потому что название файла

а если название листа сменится? Как вариант можно завести лист и прописывать названия в нём, либо ещё каким способом давать проге знать, какой файл надо открыть.

Автор - Udik
Дата добавления - 30.07.2015 в 15:47
den45444 Дата: Четверг, 30.07.2015, 15:55 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Udik, А нельзя так:
Открыл файл с которого нужно скопировать и прописать макрос, чтобы он копировал лист с той книги где запускается макрос. А место куда копировать указать например "главная". Получится так?
 
Ответить
СообщениеUdik, А нельзя так:
Открыл файл с которого нужно скопировать и прописать макрос, чтобы он копировал лист с той книги где запускается макрос. А место куда копировать указать например "главная". Получится так?

Автор - den45444
Дата добавления - 30.07.2015 в 15:55
Udik Дата: Четверг, 30.07.2015, 16:02 | Сообщение № 20
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация: 192 ±
Замечаний: 0% ±

Excel 2016 х 64
Вы ж говорите, что макросы только в одном разрешены. И проблема смены имени файла остаётся. Хотя её легко обойти - сохраните целевой файл с нужным именем, а после обработки сохраните под новым.


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
СообщениеВы ж говорите, что макросы только в одном разрешены. И проблема смены имени файла остаётся. Хотя её легко обойти - сохраните целевой файл с нужным именем, а после обработки сохраните под новым.

Автор - Udik
Дата добавления - 30.07.2015 в 16:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование листа в другую книгу текущей папки (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!