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

Вход

Регистрация

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

 

= Мир MS Excel/VBA сохранение листов в отдельные книги - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA сохранение листов в отдельные книги (Формулы/Formulas)
VBA сохранение листов в отдельные книги
mechanix85 Дата: Воскресенье, 17.12.2017, 10:42 | Сообщение № 1
Группа: Друзья
Ранг: Форумчанин
Сообщений: 240
Репутация: 34 ±
Замечаний: 0% ±

Доброго времени суток. Так как в VBA я полный ноль, то обращаюсь к Вам, специалистам. Задача у меня следующая. Необходимо сохранить листы "Алюмаш", "ПолимерКолор" и "Reynaers" в отдельные книги по определённому адресу. В принципе макрос я подходящий нашел в интернете, единственное что хотелось бы доработать:

1. при выполнении макроса должно появляться окно с запросом на ввод номера заявки и даты, которые должны записаться на листы в А1 и А2 на каждый лист
2. при охранении листов как отдельные книги имя фала должно формироваться из номера заявки&даты заявки&имени листа
3. в созданных книгах необходимо разорвать подключения на листах "Алюмаш", "ПолимерКолор" и "Reynaers", что-то типа «ActiveWorkbook.Connections("Запрос — ПолимерКолор").Delete»

Заранее благодари за помощь
К сообщению приложен файл: _SD.xlsm (47.3 Kb)
 
Ответить
СообщениеДоброго времени суток. Так как в VBA я полный ноль, то обращаюсь к Вам, специалистам. Задача у меня следующая. Необходимо сохранить листы "Алюмаш", "ПолимерКолор" и "Reynaers" в отдельные книги по определённому адресу. В принципе макрос я подходящий нашел в интернете, единственное что хотелось бы доработать:

1. при выполнении макроса должно появляться окно с запросом на ввод номера заявки и даты, которые должны записаться на листы в А1 и А2 на каждый лист
2. при охранении листов как отдельные книги имя фала должно формироваться из номера заявки&даты заявки&имени листа
3. в созданных книгах необходимо разорвать подключения на листах "Алюмаш", "ПолимерКолор" и "Reynaers", что-то типа «ActiveWorkbook.Connections("Запрос — ПолимерКолор").Delete»

Заранее благодари за помощь

Автор - mechanix85
Дата добавления - 17.12.2017 в 10:42
Karataev Дата: Воскресенье, 17.12.2017, 16:06 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Решение в файле. Запускайте процедуру "SplitSheets2".
К сообщению приложен файл: _SD_kar.xlsm (54.7 Kb)
 
Ответить
СообщениеРешение в файле. Запускайте процедуру "SplitSheets2".

Автор - Karataev
Дата добавления - 17.12.2017 в 16:06
mechanix85 Дата: Четверг, 21.12.2017, 13:16 | Сообщение № 3
Группа: Друзья
Ранг: Форумчанин
Сообщений: 240
Репутация: 34 ±
Замечаний: 0% ±

Отлично все работает. Небольшая доработка. Как сделать так чтобы запросы перед выполнением макроса обновлялись. Думал сам смогу запихнуть в код, но выдает ошибку

[vba]
Код
ActiveWorkbook.Connections("Запрос — ЗаявкаШаблон").Refresh

ActiveWorkbook.Connections("Запрос — СпрНоменклатура").Refresh

ActiveWorkbook.Connections("Запрос — Алюмаш").Refresh

ActiveWorkbook.Connections("Запрос — ПолимерКолор").Refresh

ActiveWorkbook.Connections("Запрос — Reynaers").Refresh
[/vba]


Сообщение отредактировал mechanix85 - Четверг, 21.12.2017, 15:33
 
Ответить
СообщениеОтлично все работает. Небольшая доработка. Как сделать так чтобы запросы перед выполнением макроса обновлялись. Думал сам смогу запихнуть в код, но выдает ошибку

[vba]
Код
ActiveWorkbook.Connections("Запрос — ЗаявкаШаблон").Refresh

ActiveWorkbook.Connections("Запрос — СпрНоменклатура").Refresh

ActiveWorkbook.Connections("Запрос — Алюмаш").Refresh

ActiveWorkbook.Connections("Запрос — ПолимерКолор").Refresh

ActiveWorkbook.Connections("Запрос — Reynaers").Refresh
[/vba]

Автор - mechanix85
Дата добавления - 21.12.2017 в 13:16
Manyasha Дата: Четверг, 21.12.2017, 15:29 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
mechanix85, Почему код без тегов? Исправьте.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеmechanix85, Почему код без тегов? Исправьте.

Автор - Manyasha
Дата добавления - 21.12.2017 в 15:29
mechanix85 Дата: Четверг, 21.12.2017, 15:32 | Сообщение № 5
Группа: Друзья
Ранг: Форумчанин
Сообщений: 240
Репутация: 34 ±
Замечаний: 0% ±

С телефона не очень удобно
 
Ответить
СообщениеС телефона не очень удобно

Автор - mechanix85
Дата добавления - 21.12.2017 в 15:32
Karataev Дата: Пятница, 22.12.2017, 21:20 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
В макрос внесено еще одно изменение, поэтому используйте эту версию (неправильно удалялись подключения).
 
Ответить
СообщениеВ макрос внесено еще одно изменение, поэтому используйте эту версию (неправильно удалялись подключения).

Автор - Karataev
Дата добавления - 22.12.2017 в 21:20
mechanix85 Дата: Суббота, 23.12.2017, 13:11 | Сообщение № 7
Группа: Друзья
Ранг: Форумчанин
Сообщений: 240
Репутация: 34 ±
Замечаний: 0% ±

Karataev, Здравствуйте. Ругается на [vba]
Код
ActiveWorkbook.Connections(ii).Delete
[/vba]
Суть вообще какая. Есть книга с запросами. Мне необходимо обновить все запросы при открытии. С этим вопросов нет, я включу обновление при открытии книги. А вот потом в одну таблицу (ЗаявкаШаблон) вручную будут вноситься данные, которые должны при выполнении макроса
1. обновляться в запросах
ЗаявкаШаблон
СпрНоменклатура
Алюмаш
ПолимерКолор
Reynaers

другие запросы не нужно обновлять
2. Сохранять листы в отдельные книги
Алюмаш
ПолимерКолор
Reynaers
3. Это только сейчас понял, Переименовать листы в новосозданных книгах (Алюмаш, ПолимерКолор, Reynaers) в одно имя, например "Лист1"
Файл весит 500 кб в архиве, приложить не могу
 
Ответить
СообщениеKarataev, Здравствуйте. Ругается на [vba]
Код
ActiveWorkbook.Connections(ii).Delete
[/vba]
Суть вообще какая. Есть книга с запросами. Мне необходимо обновить все запросы при открытии. С этим вопросов нет, я включу обновление при открытии книги. А вот потом в одну таблицу (ЗаявкаШаблон) вручную будут вноситься данные, которые должны при выполнении макроса
1. обновляться в запросах
ЗаявкаШаблон
СпрНоменклатура
Алюмаш
ПолимерКолор
Reynaers

другие запросы не нужно обновлять
2. Сохранять листы в отдельные книги
Алюмаш
ПолимерКолор
Reynaers
3. Это только сейчас понял, Переименовать листы в новосозданных книгах (Алюмаш, ПолимерКолор, Reynaers) в одно имя, например "Лист1"
Файл весит 500 кб в архиве, приложить не могу

Автор - mechanix85
Дата добавления - 23.12.2017 в 13:11
Karataev Дата: Суббота, 23.12.2017, 14:41 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Какое сообщение при ошибке в этом коде:
[vba]
Код
ActiveWorkbook.Connections(ii).Delete
[/vba]
 
Ответить
СообщениеКакое сообщение при ошибке в этом коде:
[vba]
Код
ActiveWorkbook.Connections(ii).Delete
[/vba]

Автор - Karataev
Дата добавления - 23.12.2017 в 14:41
Karataev Дата: Суббота, 23.12.2017, 14:51 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
У меня ошибка возникает в этой строке:
[vba]
Код
ActiveWorkbook.Connections(ii).Delete
[/vba]
Если используется эта строка:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]
Я так понимаю, что эта строка:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]
работает асинхронно. То есть макрос не дожидается, когда эта строка сделает свою работу:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]
и переходит к следующей строке. Дойдя до строки:
[vba]
Код
ActiveWorkbook.Connections(ii).Delete
[/vba]
возникает конфликт, т.к. объекты "Connections" еще обрабатываются строкой:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]
У меня подключения не обновляются, т.к. в подключениях указаны файлы, которых у меня нет. Может быть из-ха этого проблема у меня. Если у Вас есть файлы, то может быть не будет такой проблемы.


Сообщение отредактировал Karataev - Суббота, 23.12.2017, 14:51
 
Ответить
СообщениеУ меня ошибка возникает в этой строке:
[vba]
Код
ActiveWorkbook.Connections(ii).Delete
[/vba]
Если используется эта строка:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]
Я так понимаю, что эта строка:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]
работает асинхронно. То есть макрос не дожидается, когда эта строка сделает свою работу:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]
и переходит к следующей строке. Дойдя до строки:
[vba]
Код
ActiveWorkbook.Connections(ii).Delete
[/vba]
возникает конфликт, т.к. объекты "Connections" еще обрабатываются строкой:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]
У меня подключения не обновляются, т.к. в подключениях указаны файлы, которых у меня нет. Может быть из-ха этого проблема у меня. Если у Вас есть файлы, то может быть не будет такой проблемы.

Автор - Karataev
Дата добавления - 23.12.2017 в 14:51
Karataev Дата: Суббота, 23.12.2017, 15:19 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Нашел такое: вкладка "Данные" - Подключения - выберите первое подключение - Свойства - вкладка "Использование" - снимите флажок "Фоновое обновление".
Может быть эта опция включает / отключает синхронный / асинхронный способ обновления. Я в Вашем файле у всех подключений снял этот флажок и ошибки в макросе не произошло. Хотя такое поведение нелогично, ошибка должна была быть здесь:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]
 
Ответить
СообщениеНашел такое: вкладка "Данные" - Подключения - выберите первое подключение - Свойства - вкладка "Использование" - снимите флажок "Фоновое обновление".
Может быть эта опция включает / отключает синхронный / асинхронный способ обновления. Я в Вашем файле у всех подключений снял этот флажок и ошибки в макросе не произошло. Хотя такое поведение нелогично, ошибка должна была быть здесь:
[vba]
Код
ActiveWorkbook.RefreshAll
[/vba]

Автор - Karataev
Дата добавления - 23.12.2017 в 15:19
Karataev Дата: Суббота, 23.12.2017, 17:49 | Сообщение № 11
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Вот такой вариант попробуйте. Я чуть глубже разобрался в подключениях. У Вас в файле используется Power Query, оно относится в объекте "Connection" к объекту "OLEDBConnection", в котором больше инструментов для работы с подключением.


Сообщение отредактировал Karataev - Суббота, 23.12.2017, 17:51
 
Ответить
СообщениеВот такой вариант попробуйте. Я чуть глубже разобрался в подключениях. У Вас в файле используется Power Query, оно относится в объекте "Connection" к объекту "OLEDBConnection", в котором больше инструментов для работы с подключением.

Автор - Karataev
Дата добавления - 23.12.2017 в 17:49
mechanix85 Дата: Суббота, 23.12.2017, 18:07 | Сообщение № 12
Группа: Друзья
Ранг: Форумчанин
Сообщений: 240
Репутация: 34 ±
Замечаний: 0% ±

Вот такой вариант попробуйте.

Такой код ошибки не выдает, но не обновляет запросы
ЗаявкаШаблон
СпрНоменклатура
Алюмаш
ПолимерКолор
Reynaers
 
Ответить
Сообщение
Вот такой вариант попробуйте.

Такой код ошибки не выдает, но не обновляет запросы
ЗаявкаШаблон
СпрНоменклатура
Алюмаш
ПолимерКолор
Reynaers

Автор - mechanix85
Дата добавления - 23.12.2017 в 18:07
Karataev Дата: Суббота, 23.12.2017, 18:10 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
А вручную у Вас получается обновить? Есть у Вас сейчас доступ к необходимым файлам, которые участвуют в подключении?
 
Ответить
СообщениеА вручную у Вас получается обновить? Есть у Вас сейчас доступ к необходимым файлам, которые участвуют в подключении?

Автор - Karataev
Дата добавления - 23.12.2017 в 18:10
mechanix85 Дата: Суббота, 23.12.2017, 18:23 | Сообщение № 14
Группа: Друзья
Ранг: Форумчанин
Сообщений: 240
Репутация: 34 ±
Замечаний: 0% ±

Да, вручную обновляет. Давайте на почту вышлю файл
 
Ответить
СообщениеДа, вручную обновляет. Давайте на почту вышлю файл

Автор - mechanix85
Дата добавления - 23.12.2017 в 18:23
mechanix85 Дата: Суббота, 23.12.2017, 18:29 | Сообщение № 15
Группа: Друзья
Ранг: Форумчанин
Сообщений: 240
Репутация: 34 ±
Замечаний: 0% ±

Сейчас перевыполнением макроса я запускаю еще один

[vba]
Код
Sub ОбновитьЗаявки()

    ActiveWorkbook.Connections("Запрос — ЗаявкаШаблон").Refresh
    ActiveWorkbook.Connections("Запрос — СпрНоменклатура").Refresh
    ActiveWorkbook.Connections("Запрос — Алюмаш").Refresh
    ActiveWorkbook.Connections("Запрос — ПолимерКолор").Refresh
    ActiveWorkbook.Connections("Запрос — Reynaers").Refresh

End Sub
[/vba]
 
Ответить
СообщениеСейчас перевыполнением макроса я запускаю еще один

[vba]
Код
Sub ОбновитьЗаявки()

    ActiveWorkbook.Connections("Запрос — ЗаявкаШаблон").Refresh
    ActiveWorkbook.Connections("Запрос — СпрНоменклатура").Refresh
    ActiveWorkbook.Connections("Запрос — Алюмаш").Refresh
    ActiveWorkbook.Connections("Запрос — ПолимерКолор").Refresh
    ActiveWorkbook.Connections("Запрос — Reynaers").Refresh

End Sub
[/vba]

Автор - mechanix85
Дата добавления - 23.12.2017 в 18:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA сохранение листов в отдельные книги (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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