1с excel скопировать лист в другую книгу

Обновлено: 07.07.2024

(1) Функции получились рабочие.
Только вот остаётся один вопрос: Какой практический смысл вы вкладываете в них?

Ещё надо учитывать, что Если на компьютере не установлен Офис, то функция работать не будет.

Пока читал думал имеено об этом, работать с Excel из 1С то еще колдунство, если можно обойтись лучше так и сделать.


В общем-то если программист поставил себе задачу, то это не с проста.
Возможно требуется не точная копия и при копировании необходимо внести какие-то изменения.
Мне всегда интересно практическое применение.
Можно сделать отчет, который формирует результат в виде файла Excel.
Так вот, у отчета может быть макет в виде внешнего файла, на основании которого формируется новый.
Но у такого отчета будет "тонкое место"
Если на компьютере не установлен Офис, то функция работать не будет Написать функцию, которая копирует все содержимое из одного листа Excel (.xltm) в другой.

Проще не копировать содержимое а скопировать сам лист.

Если на компьютере не установлен Офис, то работать не будет

(2) RailMen, а что мешает Вам в экселе начать запись макроса, потом выделить всю книгу, нажать "Копировать", перейти в следующий лист и нажать "Вставить", а потом посмотреть, какие команды эксель запишет? Вот собственно, что записал макрос, когда я выделил все в листе "20" и скопировал содержимое в листы "21", "22", "23":

Сейчас сам тогда напишу в 1С, потестирую и отпишусь.

Файла excel? Боюсь всех напугать, мне саму страшно на него смотреть. Получился код для авто копирования содержимого ИсходногоЛиста в другие листы, чей список имен задан строкой через запятую:

Пишет ошибку: Метод объекта не обнаружен (Selection)
Чего делать?

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

(8) user_2010, там очень много ссылок и на другие листы и на все, что только может приснится в самом страшном сне 1Снега.

Я решил п.п. 1 смоими силами. Excel из под 1С шайтанство какое-то )))) Сейчас выложу обработину

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

Короче под *.xltm (с макросами) не работает. Почему?
Может из-за политики безопасности? Хмхмх
Нет, даже включенным автозапуском макросов формат *.xltm (с макросами) не поддается коду 1С.
А вот обычный *.xlsx работает.

Решение 2 задачи:

ПравилаЗаменыВЛисте таблица с колонками:
ИмяЛиста
ЧтоМеняем - возвожны варианты "Value", "FormulaLocal"
СтрокаПоиска
СтрокаЗамены
ИменаЯчеекДляЗамены - Имена ячеек для замены через запятую "1,A; 2,B" (если не указано, то менять во всем листе)

СписокЛистовExcel - список имен листов книги Excel, задается после определения книги

(12) RailMen, Не пойму зачем менять формулы? при копировании листа формулы остаются теми же. Возможно изменение только ссылок на листы или книги - если вы копируете несколько листов или книг. Я не права? (12) RailMen, по моему код будет выполняться относительно долго. 1 хинт. если менять значения, то гораздо быстрее сформировать массив или ТЗ значений (загрузить через ADO, обработать) , выгрузить через Табличный документ в excel , затем прочитать через ADO в RecordSet и загрузить в исходную колонку или диапазон через CopyFromRecordset . второй хинт. по формулам. вряд ли формулы все разные, есть некая единая формула по колонке или диапазону. ну тогда надо задать ее Cells[граница1, граница2]).Formula = строковоепредставлениеформулы. (по формулам можно также отключить ScreenUpdating , потом включить ,но я думаю это всем известно)

(28) cool.vlad4, копировал лист 100 раз как написал выше: выходит не более минуты это не критично.
На каждом листе МНОГО таблиц, каждая имеет свою логику вычисления ячеек. Приходится упорно вычленять области, где можно отследить зависимости и их менять программно в созданных листах. Адская работа.

Теперь стоит другая задача: по заданной области (к примеру, столбец А1:А99) определить зависимость находящихся внутри формул и автоматически сгенерировать новые формулы на новом диапазоне А100:А199. Пример формул, которые надо продолжить вниз (пробелы вставил для облегчения понимания) :
=I2 * '1'!B289 * '1'!$G$1
=I3 * '1'!B290 * '1'!$G$1
=I4 * '1'!B291 * '1'!$G$1
=I5 * '2'!B289 * '2'!$G$1
=I6 * '2'!B290 * '2'!$G$1
=I7 * '2'!B291 * '2'!$G$1
=I8 * '3'!B289 * '3'!$G$1
=I9 * '3'!B290 * '3'!$G$1
=I10 * '3'!B291 *'3'!$G$1
.

Нужно автоматически продолжить формулы в колонке.
Понятно, что нужно сначала как то распарсить формулу на составляющие. И т.д.

(29) RailMen, За основную то задачу кому вознаграждение будет? (29) RailMen, Вы так всё вознаграждение "сольёте" инфостарту ;) 1С-ник эгоист :) Сам поставил задачу, назначил вознаграждение, решил, выдал себе вознаграждение. И это пока все спали :))) pt_olga; dj_serega; awk; RailMen; BuhBuhov; PowerBoy; FilatovRA; + 7 – Ответить

ЛистОбразцовый.Copy() или ЛистОбразцовый.Cells.Copy() пробовали?

Если я не ошибаюсь, в экселе есть отладчик, пробовали сделать точку останова (breakpoint) и в его аналоге "табло" посмотреть доступные свойства ЛистОбразцовый?

Слишком давно такое делал, примеров не сохранилось. Общая идея была копировать бланк отчета со скрытого листа.

Если содержимое одно и тоже то можно так:КопироватьФайл (FileCopy)
Синтаксис:

КопироватьФайл(<ИмяФайлаИсточника>, <ИмяФайлаПриемника>)
Параметры:

Тип: Строка.
Полное имя файла-источника.
<ИмяФайлаПриемника> (обязательный)

Тип: Строка.
Полное имя файла-приемника.
Описание:

Копирует файл-источник в файл-приемник. Допускается перезапись файла-приемника.

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Примечание:

КопироватьФайл("C:\Temp\Order.htm", "C:\My Documents\Order.htm");

Так бы неплохо выдать вознаграждение, чтобы глаз тема не мазолила))

До кучи, чтобы не пропадал полезный опыт:

Общий принцип - записывается макрос, изучается хелп к командам, код переписывается без использования Selection. Бланки и шаблоны удобно прятать на скрытые листы, через Range удобно ссылаться на именованные ячейки - Range("Курс"), параметры удобно выносить либо на отдельный лист, либо фиксировать область шапки и размещать в ней. Параметры печати "по ширине листа" в экселе - 1 лист в ширину, 999 в высоту.

(33) Очень верное замечание.
А ещё При составлении таблиц Excel нужно руководствоваться следующими принципами:

1. Нельзя пропускать пустые столбцы, то есть, если столбец «Наименование» имеет адрес «B», то столбец «Количество» должен иметь адрес «C». Если название столбца длиннее чем ширина столбца, то его можно растянуть или воспользоваться вкладкой выравнивание в диалоговом окне «Формат ячейки» и установить флажок «Переносить по словам».

2. Желательно, не оставлять пустых строк в таблице, без необходимости.

3. Заголовок столбца нужно писать в одной ячейке.

При выполнении данного задания использовать значок «Объединить и поместить в центре» для центрирования названий таблиц. Значения «Итого» в таблицах должны рассчитываться с помощью значка суммы , а значения в столбце «Сумма» во второй таблицы должны рассчитываться с помощью формул.

Для расположения текста внутри ячейки в несколько строк можно воспользоваться вкладкой «Выравнивание» в диалоговом окне «Формат» ячейки и отметить там пункт «Переносить по словам» или нажать в ячейке комбинацию клавиш «Alt + Enter».

Листы можно перемещать или копировать в пределах одной книги, чтобы упорядочить содержащиеся в ней данные.

Браузер не поддерживает видео.

С помощью команды Переместить или скопировать лист можно полностью переместить или скопировать листы в пределах одной или нескольких книг. Чтобы переместить или скопировать часть данных на другие листы или в другие книги, можно использовать команды Вырезать и Копировать.

Перемещение листа в книге

Щелкните ярлычок листа и перетащите его в нужное место.

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

Копирование листа в одной книге

Удерживая нажатой клавишу CTRL, перетащите ярлычок листа на нужное место.

Щелкните ярлычок листа правой кнопкой мыши и выберите команду Переместить или скопировать.

Установите флажок Создать копию.

В разделе перед листом укажите, куда вы хотите поместить копию.

Если данные требуется переупорядочить, можно менять порядок листов в книге, а также копировать и перемещать листы в другие книги. Обратите внимание на то, что после перемещения листа в вычислениях и на диаграммах, в основе которых лежат содержащиеся на нем данные, могут использоваться неправильные значения.

Перемещение листа

Перетащите ярлычок листа в нужное место в строке ярлычков.

Копирование листа

Нажмите и удерживайте клавишу OPTION.

Перетащите ярлычок листа в строке ярлычков в место, где нужно создать копию.

Важно: Отпустите сначала кнопку мыши, а затем — клавишу OPTION.

Перемещение листа в другую книгу

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

Откройте книгу, в которую требуется переместить лист.

В меню Окно щелкните книгу, в которую входит перемещаемый лист.

Щелкните лист, который требуется скопировать в другую книгу.

В меню Правка выберите пункты Лист > Переместить или скопировать лист.

В меню В книгу выберите книгу, в которую требуется переместить лист.

Совет: Чтобы создать новую книгу и переместить в нее лист, выберите вариант новая книга.

В поле Перед листом выберите лист, перед которым нужно вставить перемещаемый лист, или вариант переместить в конец.

Копирование листа в другую книгу

Откройте книгу, в которую требуется скопировать лист.

В меню Окно щелкните книгу, в которую входит копируемый лист.

Выберите лист, который требуется скопировать.

В меню Правка выберите пункты Лист > Переместить или скопировать лист.

В меню В книгу выберите книгу, в которую требуется скопировать лист.

Совет: Чтобы создать новую книгу и переместить в нее лист, выберите вариант новая книга.

В поле Перед листом выберите лист, перед которым нужно вставить скопированный лист, или вариант переместить в конец.

Установите флажок Создать копию.

Изменение цвета ярлычка листа

Изменение цвета ярлычков листов может облегчить отслеживание информации в больших книгах.

Удерживая клавишу CONTROL, щелкните ярлычок листа.

Выберите команду Цвет ярлычка и укажите нужный цвет.

В Excel в Интернете можно дублировать (или копировать) книги. Просто щелкните правой кнопкой мыши имя ярлычка в нижней части листа и выберите команду Дублировать.

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

Выделите все данные на листе.

Сочетания клавиш. Нажмите клавиши CTRL+ПРОБЕЛ на клавиатуре, а затем клавиши SHIFT+ПРОБЕЛ.

Скопируйте все данные на листе, нажав CTRL+C.

Щелкните знак плюса (+), чтобы добавить пустой лист.

Щелкните первую ячейку на новом листе и нажмите CTRL+V, чтобы ввести данные.

Примечание: При вставке ячеек на новый лист примененное к ним условное форматирование будет потеряно.

В Excel в Интернете, если щелкнуть правой кнопкой мыши явку листа, как в настольном приложении Excel, вы не сможете переместить или скопировать лист. В Excel в Интернете вы можете получить такой же результат, скопируя все данные на листе и вкопив их на пустой лист в другой книге.

Чтобы переместить или скопировать книгу в другую книгу в Excel в Интернете, выполните указанные Excel в Интернете.

Выделите все данные на листе.

Сочетания клавиш: нажмите клавиши CTRL+ПРОБЕЛ, а затем клавиши SHIFT+ПРОБЕЛ.

Скопируйте все данные на листе, нажав CTRL+C.

Откройте книгу, в которую необходимо вставить данные, и щелкните знак "плюс" (+) в строке состояния, чтобы добавить новый пустой лист.

Щелкните первую ячейку нового таблицы, а затем нажмите CTRL+V, чтобы ввести данные на этот.

Примечание: При вставке ячеек в другую книгу примененное к ним условное форматирование будет потеряно.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

logist --> logist



Просмотр профиля Есть процедура которая должна бы копировать листы в одну книгу, отрабатывает без ошибок, т.е. листы в новой книге создаются, но проблема в том что они пустые, т.е. содержимое листов не копируется. Что я делаю не так?
alex040269 --> alex040269



Просмотр профиля Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП logist --> logist



Просмотр профиля alex040269 Прогресс есть, но. Листы копируются с содержимым, но создаются новые листы по порядку, а добавленные с новыми именами так и пустые. logist --> logist



Просмотр профиля

В результате оптимизации, вышло вот что:

Вдруг кому пригодится. Перегоняет однолистовые xls-файлы (СписокФайлов - список значений) в одну книгу, имя листа в книге это имя файла с одним листом.


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
RSS
Текстовая версия Сейчас: 18.11.21, 19:02

1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!

Существует ряд ситуаций, в которых нам может потребоваться копировать и перемещать листы Excel, как внутри текущей, так и в новую книгу. Например, когда мы хотим создать резервную копию важных листов, или использовать одни и те же данные листа в разных файлах.

В этой статье мы рассмотрим самые простые и популярные способы копирования и перемещения листов в Excel.

Как копировать лист в Excel без изменений

Скопировать лист можно несколькими способами.

Копия листа с помощью перетягивания

Пожалуй, самый простой способ копирования листа в Excel заключается в перетягивании ярлыка листа. Для этого:

  • Зажмите клавишу CTRL на клавиатуре
  • Зажмите и перетяните ярлык с листом Excel
  • Готово, копия листа создана.

Скопировать лист с помощью контекстного меню

Есть другой способ создания копии листа в Excel. Для этого проделайте следующие действия:

Как скопировать и переместить лист Excel

Как скопировать и переместить лист Excel

Как скопировать лист Excel в другой файл

Для создания копии листа Excel в другой файл, нам нужно проделать похожие действия, описанные в статье выше.

Как скопировать и переместить лист Excel

Также, вы можете переместить лист Excel в другую книгу с помощью перемещения. Для этого зажмите левой клавишей мыши ярлык листа и переместите его в новую книгу.

Читайте также: