Не удается вставить листы в конечную книгу excel

Копирование листа Excel в новый документ Excel

Задача: имеется шаблон файла Иксель, сделать новую книгу и скопировать лист из шаблона в новую книгу.
Данный код позволяет скопировать данные, но размеры ячеек не сохраняются. Нужно что бы копировалось, как в шаблоне, включая формулы. Что можно изменить?

Excel = Новый COMОбъект(«Excel.Application»);
Исключение
Сообщить(«Не удалось инициализировать Excel»);
Возврат;
КонецПопытки;

// Открыть книгу, содержащую шаблон оформления.
Шаблон = Excel.Workbooks.Open(«d:FilesШаблоны отчетовШаблон Software development report in portfolio.xlsx»);

ЛистШаблона = Шаблон.WorkSheets(«Шаблон Портфеля»);

// добавить в книгу новый лист:

ЛистНовый = НоваяКнига.Sheets.Add();
ЛистНовый.Name = «Проект 1»;

// Копировать область из книги-шаблона в новую книгу.
ЛистШаблона.Range(«A1:Y87»).Copy(ЛистНовый.Range(«A1:Y87»)); // работает, но не сохраняется размер ячеек

//ЛистШаблона.Copy(ЛистНовый);- не работает выдает ошибку
//Произошла исключительная ситуация (Microsoft Excel): Не удается вставить листы в конечную книгу, так как она содержит меньшее число строк и столбцов, чем исходная книга. Чтобы переместить или скопировать данные в конечную книгу, следует выделить их, а затем с помощью команд копирования и вставки вставить их на листы другой книги.

Excel не может вставить листы в целевую книгу, потому что она содержит меньше строк и

Я пытаюсь объединить 12 файлов Excel (каждый из которых имеет один лист Excel) в один консолидированный файл Excel, в котором будет 12 листов Excel с использованием библиотеки Microsoft.Office.Interop.Excel и следующей ошибки:

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

Я думаю, что это связано с проблемой разрешений объектов DCOM приложения Microsoft Excel.

Может ли кто-нибудь объяснить, какой тип разрешения требуется для получения услуг приложения Microsoft Excel с использованием объекта DCOM.

Ошибка — Приложение Microsoft Excel не удается вставить данные

Всем привет! Сегодня будет небольшая статейка на тему Microsoft Office, а именно почему при копирование и вставке вылетает ошибка:

Приложение Microsoft Excel не удается вставить данные

Приложение Microsoft Excel не удается вставить данные

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

Посидев некоторое время с документом я смоделировал всевозможные варианты работы этого документа excel с другими документами при сочетании действий CTRL+C и CTRL+V и вот что я нашел.

Данная ошибка Приложение Microsoft Excel не удается вставить данные появляется только в том случае когда вы открыли excel как второе окно и работается с эксель документами на более чем двух мониторах.

Описание ошибки

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

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

  • Вы открываете с рабочего стола ваш документ Excel в котором должны работать
  • Далее вам надо открыть второй документ в который нужно перенести какие то данные (инструкция как открывать на одном компьютере два excel )
  • Копируете какую то область и дальше могут быть два события:
  1. У вас все перенесется в новый документ, но выскочит сообщение
    «Диапазон, вставляемый из буфера обмена, содержит формулы, которые невозможно вставить в данный экземпляр Excel, поэтому формулы будут вставлены как значения. Возможно, была предпринята попытка вставки формул из режима защищенного просмотра, другого экземпляра Excel или другого приложения»

    после этого все остальные попытки копирования будут сразу приводить к ошибке — Приложение Microsoft Excel не удается вставить данные

  2. У вас сразу будет вылетать сообщение при копировании с текстом выше.

Решение проблемы

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

чтобы решить проблему с ошибкой Приложение Microsoft Excel не удается вставить данные делаем следующее:

1 Вариант

  1. Открываем файл двойным кликом в папке где он находится
  2. работаем с файлом переключаясь между книгами в панели пуск

2 Вариант

  1. В книге в которой уже работает нажимаем меню Файл — > открыть и выбираем через обзор наш документ
  2. Расширяем/растягиваем оболочку Excel на два экрана
  3. наши две книги сворачиваем и ставим каждую книгу на одном из мониторов
  4. работаем с файлом переключаясь между книгами в панели пуск

К сожалению вы не увидите ни тут, ни где бы то еще вариант, как это можно сделать по другому, что бы это работала в разных окнах Excel! Это баг Офиса и если Вам надо в этом документе произвести большое кол-во вставок, то можно и потерпеть неудобства.

Моя же задача была углубленно разобраться в данной проблеме и сэкономить Вам время над данной ошибкой!

А для подтверждения моих слов, вот вам комментарий человека со специализированного форума Excel!

Это может происходить из-за двух открытых экземпляров excel. Т.е. книга1 и книга2 запускается в разных экземплярах Excel. Попробуйте запустить файлы из меню Файл Excel

Excel не может вставить листы в целевую книгу

Я пытаюсь объединить 12 файлов Excel (каждый из которых имеет один лист Excel) в один консолидированный файл Excel, в котором будет 12 листов Excel с использованием библиотеки Microsoft.Office.Interop.Excel и следующей ошибки:

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

Я думаю, что это связано с проблемой разрешений объектов DCOM приложения Microsoft Excel.

Может ли кто-нибудь объяснить, какой тип разрешения требуется для получения услуг приложения Microsoft Excel с использованием объекта DCOM.

Спасибо.

  • 1 Вы используете ASP.NET и Office Interop. Это плохая идея. Не делай этого.
  • Мейсон, что вы предлагаете для выполнения вышеуказанной задачи. Собственно реализация уже есть в приложении.
  • Используйте библиотеку, не зависящую от Interop, например EPPlus или NPOI.

У меня была эта проблема в Excel 2013. В параметрах в разделе «Сохранить» был параметр, который создавал новые книги как книги Excel 97-2003. Я изменил это на книгу Excel, и команда начала работать.

Tweet

Share

Link

Plus

Send

Send

Pin

в открытую книгу вставить активный/открытый лист др. книги

Yar4i

Дата: Среда, 15.03.2017, 14:47 |
Сообщение № 1

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

Добрый день дамы и господа :D
Есть два открытых файла Excel. Название одного из них всегда содержит «М29*…», название второго меняется «Nnn».
Нужно в первый открытый файл «М29…» скопировать активный лист из второго открытого файла «Nnn» (во втором файле может быть и много листов).
Ранее я думал, что необходимо чётко прописывать наименования книг, листов, но наткнулся на этот код:
[vba]

Код

Sub О()
Dim iPath$, iFileName$
    iPath = ThisWorkbook.Path & «»
    iFileName = Dir(iPath & «*.xls»)
    Do Until iFileName = «»
       If iFileName <> ThisWorkbook.Name Then
          ThisWorkbook.Sheets.Add , , , iPath & iFileName
       End If
       iFileName = Dir
    Loop
End Sub

[/vba]
Попробовал его при следующих условиях:
На рабочем столе сохранён Excel с поддержкой макросов «Макросы», открыты обе книги («М29…» и «Nnn»), запускаю макрос из панели быстрого доступа.
Что на первом файле запускаю, что на втором — результат одинаков: копируется первый лист файла «М29…» в файл «Макросы».
Пусть не правильно,.. пусть не то и не туда, но копируется же.

Сообщение отредактировал Yar4iСреда, 15.03.2017, 14:48

 

Ответить

Perfect2You

Дата: Среда, 15.03.2017, 15:33 |
Сообщение № 2

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 237


Репутация:

59

±

Замечаний:
0% ±


Excel 2010

Приведенный Вами макрос просматривает ВСЮ папку, где лежит файл с макросом. Из ВСЕХ файлов с расширением xls он выдергивает по листку и копирует в файл с макросом. Причем, похоже для этого даже необязательно: открыты ли они.

Для Вашей цели достаточно находиться на листе, который должен быть скопирован и одной строки:
[vba]

Код

ActiveSheet.Copy After:=Workbooks(«М29…»).Sheets(Workbooks(«М29…»).Sheets.Count)

[/vba]
Вместо «М29…», конечно же, должно быть полное имя файла с расширением.
Приведенный пример вставляет новый лист в конец книги (правее всех). А вот так он будет вставлен левее всех:
[vba]

Код

ActiveSheet.Copy Before:=Workbooks(«М29…»).Sheets(1)

[/vba]

 

Ответить

Yar4i

Дата: Среда, 15.03.2017, 16:19 |
Сообщение № 3

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

должно быть полное имя файла

Спасибо работает, без указания расширения тоже.
А без имён никак вообще? (или частичного указания) Должен же быть All ActiveSheets какой-нибудь.

Сообщение отредактировал Yar4iСреда, 15.03.2017, 16:24

 

Ответить

Perfect2You

Дата: Среда, 15.03.2017, 18:22 |
Сообщение № 4

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 237


Репутация:

59

±

Замечаний:
0% ±


Excel 2010

Ну почему же никак…
[vba]

Код

Sub otl()
Dim wbn As String, wb As Object
wbn = «»
For Each wb In Application.Workbooks
    If Left(wb.Name, 3) = «М29» Then
        wbn = wb.Name
    End If
Next wb
If Len(wbn) = 0 Then
    MsgBox «Нет такой книги»
    Exit Sub
End If
ActiveSheet.Copy Before:=Workbooks(wbn).Sheets(1)
End Sub

[/vba]
хотя бы так. Найдет начинающуюся с «М29» книгу. Вот только если такая не одна, затрудняюсь сказать: какую из них.

 

Ответить

Yar4i

Дата: Четверг, 16.03.2017, 09:09 |
Сообщение № 5

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

начинающуюся с «М29» книгу

Спасибо. Великолепно работает.
В конце только изменил: [vba]

Код

ActiveSheet.Copy After:=Workbooks(wbn).Sheets(2)

[/vba] (не сказал, что в книге М29 всегда 2 листа).

 

Ответить

Yar4i

Дата: Четверг, 16.03.2017, 13:14 |
Сообщение № 6

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

Выскочила разовая ошибка «Не удается вставить листы в конечную книгу, так как она содержит меньшее число строк и столбцов, чем исходная книга.»
Нашёл решение: пересохранить в другом расширении файл «донор» *.xlsx или *.xls. Но суть ошибки не понял какая разница, где сколько листов, столбцов.

 

Ответить

китин

Дата: Четверг, 16.03.2017, 13:17 |
Сообщение № 7

Группа: Модераторы

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

Замечаний:
0% ±


Excel 2007;2010;2016

в xls 64000 строк в xlsx 1000000 строк. Есть разница?


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

Yar4i

Дата: Четверг, 16.03.2017, 14:24 |
Сообщение № 8

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

в xls 64000 строк в xlsx 1000000 строк.

Спасибо.

[vba]

Код

…ActiveSheet.Copy After:=Workbooks(wbn).Sheets(2)
ActiveSheet.Name = «КС2»

[/vba]
пытаюсь имя перенесенному листу назначить, не выходит

Вышло:)
[vba]

Код

ActiveWorkbook.ActiveSheet.Name = «КС2»

[/vba]

Сообщение отредактировал Yar4iЧетверг, 16.03.2017, 14:37

 

Ответить

Perfect2You

Дата: Четверг, 16.03.2017, 14:40 |
Сообщение № 9

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 237


Репутация:

59

±

Замечаний:
0% ±


Excel 2010

У меня без проблем.
Но только если нет уже в книге листа с таким именем. Может, в Вашей есть с таким именем лист?

 

Ответить

Yar4i

Дата: Четверг, 16.03.2017, 14:52 |
Сообщение № 10

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010


нет листа с таким именем, повторил и опять без ActiveWorkbook. никак.

 

Ответить

Perfect2You

Дата: Четверг, 16.03.2017, 14:54 |
Сообщение № 11

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 237


Репутация:

59

±

Замечаний:
0% ±


Excel 2010

Странно, но главное, проблему Вы решили. Поздравляю!

 

Ответить

Yar4i

Дата: Четверг, 16.03.2017, 16:20 |
Сообщение № 12

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010


Спасибо.
Я «донорский» файл хочу предварительно пересохранить в новом формате, чтоб не выскакивала ошибка ««Не удается вставить листы в конечную книгу, так как она содержит меньшее число строк…»
(немного не по теме, (а немного и по теме)):
[vba]

Код

ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & «.xlsx», FileFormat:=xlOpenXMLWorkbook

[/vba]
сохраняет в нужном формате «.xlsx», но на рабочем столе, а хочется чтобы сохранял с подменой, т.е. вместо существующего.

 

Ответить

_Boroda_

Дата: Четверг, 16.03.2017, 16:24 |
Сообщение № 13

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Вы файл с каким именем сохраняете?
Вот так нужно
[vba]

Код

ActiveWorkbook.Path & «ИМЯ_ФАЙЛА.xlsx»

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Yar4i

Дата: Четверг, 16.03.2017, 16:32 |
Сообщение № 14

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010


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

Сообщение отредактировал Yar4iЧетверг, 16.03.2017, 16:37

 

Ответить

Manyasha

Дата: Четверг, 16.03.2017, 16:46 |
Сообщение № 15

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

Yar4i, ActiveWorkbook.Path — возращает путь (без имени),
[vba]

Код

ActiveWorkbook.Path & «.xlsx»

[/vba]
эта строка не содержит имени активной книги.


ЯД: 410013299366744 WM: R193491431804

 

Ответить

Yar4i

Дата: Четверг, 16.03.2017, 17:02 |
Сообщение № 16

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

Нашёл многоходовочку, но не идёт она:
[vba]

Код

On Error Resume Next: Err.Clear
    ‘ макрос работает только в Excel 2007 (и более новых версиях)
    If Val(Application.Version) < 12 Then Exit Sub
    ‘ получаем полный путь к текущему файлу Excel
   oldName$ = ActiveWorkbook.FullName
    ‘ выход, если файл уже в нужном формате (XLSX)
   If UCase$(oldName$) Like «*.XLSX» Then Exit Sub
    ‘ формируем новое имя файла (меняем расширение)
   newName$ = Left(oldName$, InStrRev(oldName$, «.»)) & «xlsx»
    ‘ сохраняем файл под новым именем в формате XLSX
   ActiveWorkbook.SaveAs newName$, xlExcel12
    ‘ удаляем прежний файл (в старом формате)
   If Err = 0 Then Kill oldName$

[/vba]

Сообщение отредактировал Yar4iЧетверг, 16.03.2017, 17:02

 

Ответить

_Boroda_

Дата: Четверг, 16.03.2017, 17:07 |
Сообщение № 17

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Yar4i, Даже если Вы откроете файл xls и пересохраните его в xlsx, то все равно в этот файл Вы не всунете другой лист из файла xlsx — ругаться будет. Чтобы все получилось, Вам нужно пересохранить файл (это правильно Вы делаете), закрыть его и открыть заново
А по поводу

с уже существующим (прежним, т.е. без измиенений). И в то же место, папку

посмотрите в моем посте выше я привел пример кода
А вообще Вам примерно вот такой код нужен
[vba]

Код

Sub tttt()
    With ActiveWorkbook
        fn_ = .Name
        If fn_ = ThisWorkbook.Name Then Exit Sub
        If LCase(Right(fn_, 4)) = «.xls» Then
            fn1_ = Left(fn_, Len(fn_) — 4)
            fp_ = .Path & Application.PathSeparator & fn1_ & «.xlsx»
            Application.DisplayAlerts = 0
            .SaveAs Filename:=fp_, FileFormat:=xlOpenXMLWorkbook
            Application.DisplayAlerts = 1
            .Close
            Workbooks.Open (fp_)
        End If
    End With
End Sub

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Yar4i

Дата: Четверг, 16.03.2017, 17:11 |
Сообщение № 18

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 137


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

а вообще Вам примерно вот такой код нужен

Спасибо

 

Ответить

leonrom

Дата: Понедельник, 22.01.2018, 22:18 |
Сообщение № 19

Группа: Пользователи

Ранг: Прохожий

Сообщений: 3


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Книги должны иметь одинаковое значение параметра [workbook].FileFormat. А уж добиться этого можно по-разному…


Леон

 

Ответить

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
'Выберем и откроем файл, куда надо вставить листы с данными
    Dim avFiles
    'по умолчанию к выбору доступны файлы Excel(xls,xlsx,xlsm,xlsb)
    avFiles = Application.GetOpenFilename _
                ("Excel files(*.xls*),*.xls*", 1, "Выбрать Excel файл куда вставить данные", , False)
    If VarType(avFiles) = vbBoolean Then
        'была нажата кнопка отмены - выход из процедуры
        Exit Sub
    End If
'   Получим отдельные значения полный путь, папка, имя файла
    Dim avFilesName As String, i As Integer, FolderName As String, NomerLista As Integer
    NomerLista = 2 'Номер листа, перед которым будем вставлять новые листы
    i = InStrRev(avFiles, "") 'позиция последнего 
    avFilesName = Mid(avFiles, i + 1)
    FolderName = Left(avFiles, i - 1)
'   Откроем файл
    Workbooks.Open avFiles
'----------------------------------------------------------------------------------------------------------
'Выберем и откроем папку, откуда надо взять файлы и вставить листы с данными
    Dim sFolder As String, sFiles As String, NameLista1 As String, NameLista2 As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
'----------------------------------------------------------------------------------------------------------
    Dim SheetsInserts As String
   'Будем открывать по очереди все файлы и копировать из них листы
    sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)   'присвоим переменной путь к папке
    Application.ScreenUpdating = False  'отключаем обновление экрана
    sFiles = Dir(sFolder & "*.xls*")    'Присваиваем переменной имя файла в виде полного пути
        Do While sFiles <> ""           'цикл с условием: пока имя файла не пустое
        ReDim Preserve vFolders(lCount) 'заносим полное имя файла в список файлов
        vFolders(lCount) = sFolder & sFiles
        lCount = lCount + 1
        Workbooks.Open sFolder & sFiles 'открываем книгу
'----------------------------------------------------------------------------------------------------------
'Действия с файлом
        '------------------------------------------------------------------------
        'Копировать диапозон и вставить его в нужную нам книгу
        Dim c As Long, FirstColumn As Long, LastColumn As Long, LastStroka As Long
        Dim n As Long, FirstColumn2 As Long, LastColumn2 As Long, LastStroka2 As Long
        Dim NameLista As String
        Dim Index As Long
        Dim m As String
        FirstColumn = Workbooks(sFiles).Worksheets(1).UsedRange.Column
        LastColumn = Workbooks(sFiles).Worksheets(1).UsedRange.Columns.Count - 1 + Workbooks(sFiles).Worksheets(1).UsedRange.Column
        LastStroka = Workbooks(sFiles).Worksheets(1).UsedRange.Rows.Count - 1 + Workbooks(sFiles).Worksheets(1).UsedRange.Row
        NameLista = Left(Workbooks(sFiles).Name, 2)
        LastColumn2 = Workbooks(avFilesName).Worksheets(NameLista).UsedRange.Columns.Count - 1 + Workbooks(sFiles).Worksheets(1).UsedRange.Column
        LastStroka2 = Workbooks(avFilesName).Worksheets(NameLista).UsedRange.Rows.Count - 1 + Workbooks(sFiles).Worksheets(1).UsedRange.Row
        c = LastStroka2 + 1
        n = LastStroka + c
        '------------------------------------------------------------------------
        '1 вариант
        Dim source As Range
        Set source = Workbooks(sFiles).Worksheets(1).Range(Cells(2, 1), Cells(LastStroka, LastColumn))
        source.Copy
        Dim destination As Range
        Set destination = Workbooks(avFilesName).Worksheets(NameLista).Range(Cells(c, 1))
        'Здесь ошибка
        source.Copy destination
        '------------------------------------------------------------------------
        '2 вариант
        'Workbooks(sFiles).Worksheets(1).Range(Cells(2, 1), Cells(LastStroka, LastColumn)).Copy Workbooks(avFilesName).Worksheets(NameLista).Range(Cells(c, 1))
        '------------------------------------------------------------------------
        '3 вариант
       'Workbooks(sFiles).Worksheets(1).Range(Cells(2, 1), Cells(LastStroka, LastColumn)).Copy
        'Workbooks(avFilesName).Activate
        'Workbooks(avFilesName).Worksheets(NameLista).Range(Cells(c, 1)).Select
        'ActiveSheet.Paste
    
        Workbooks(sFiles).Close True
        sFiles = Dir
    Loop
    Application.ScreenUpdating = True
MsgBox "Обработка завершена"
 
End Sub

Необходимо открыть вкладку «Power Query». В разделе «Данные Excel» нажимаем кнопку (пиктограмму) «Из таблицы». Далее нужно выбрать диапазон ячеек, из которых нужно «притянуть» информацию и нажимаем «Ок». После выбора области данных появится окно настройки вида новой таблицы.

  1. Чтобы переместить ячейки, нажмите кнопку Вырезать . Сочетание клавиш Можно также нажать клавиши CTRL+X.
  2. Чтобы скопировать ячейки, нажмите кнопку Копировать . Сочетание клавиш Можно также нажать сочетание клавиш CTRL+C.

специалист

Мнение эксперта

Витальева Анжела, консультант по работе с офисными программами

Со всеми вопросами обращайтесь ко мне!

Задать вопрос эксперту

Поскольку некоторые возможности Microsoft Excel можно рассмотреть или использовать, но невозможно изменить после открытия совместного доступа к книге, следует настроить эти возможности перед тем, как сделать книгу общей. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!

Книгу Excel также можно открыть в WordPad. Если книга откроется, вы сможете восстановить код Microsoft Visual Basic в модулях и модулях классов. Чтобы найти код, выполните поиск по слову Sub или Function.
Excel не Удается Вставить Листы в Конечную Книгу Так Как Она Содержит Меньшее • Второе решение

Не удается вставить ячейки в Excel 2010 — сообщение об ошибке «операция не разрешена»

  1. На вкладке Данные щелкните Получить данные > Из файла > Из книги . .
  2. Найдите книгу в окне Импорт данных .
  3. В окне Навигатор выберите таблицу или лист, которые вы хотите импортировать, а затем нажмите кнопку Загрузить или Изменить .

Шаг 4. Выбираем в выпадающем меню, куда хотим отправить выбранный рабочий лист. При этом решаем важную задачу: скопировать или переместить? Если скопировать, то отмечаем галочкой режим «Создать копию»:

Не удается вставить ячейки в Excel 2010 — сообщение об ошибке «операция не разрешена»

Я работал над электронной таблицей в Excel 2010, и внезапно, когда я попытался вставить новую строку ячеек, я увидел, что параметры вставки и удаления были недоступны.

Я попытался скопировать другую строку и вставить ее как новую, но я получил сообщение об ошибке:

«Эта операция недопустима. Операция пытается сместить ячейки в таблице на вашем рабочем листе».

Я не объединял и не скрывал никаких ячеек / строк / столбцов. Там нет формул. Там нет проверки данных. Я попытался закрыть и снова открыть электронную таблицу.

Как данные попали на ваш лист? (Напечатано, вставлено, связано?) Это может сыграть на этом. Похоже, вы достигли предела числа строк. Хотя это не было распространено в 2003 году или ранее (макс. ~ 65 000 строк), сейчас должно быть намного сложнее, поскольку он может обрабатывать более 1 000 000 строк.

у вас нет форматирования во всех строках? или что-то, что не позволит ему сдвинуть строки или столбцы. Попробуйте удалить все под вашими 150 строками и последним правым столбцом

Как указывает сообщение, вы пытаетесь вставить строки в таблицу на вашем листе. Как правило, но не обязательно, таблицы будут иметь полосовое форматирование. Если щелкнуть ячейку в таблице, появится вкладка «Таблица», например:

форматирование Excel

Команды «Вставить» и «Удалить» становятся недоступными, когда несколько строк пересекают строку, которую вы пытаетесь удалить (и, возможно, в другой раз):

серые таблицы

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

введите описание изображения здесь

Вы можете превратить столы обратно в нормальные ячейки. Делай это так:

введите описание изображения здесь

Хорошо, это означает, что есть таблица на листе. Выполните те же действия, кроме ввода, ?activesheet.listobjects(1).range.address и это скажет вам, где он находится на листе.

Хорошо, это означает, что есть таблица, которая занимает все столбцы от A до J. Кажется, что, наряду с моим подробным ответом выше, должен ответить на ваш оригинальный вопрос. Просто поместите курсор в A1, и у вас должны появиться меню Table, которые я описал. Тот факт, что таблица занимает все строки, объясняет, почему кнопка «Вставить» недоступна, не знаю, почему «Удалить».

Я получаю ту же ошибку. «Эта операция недопустима. Операция пытается сместить ячейки в таблице на вашем рабочем листе».

Пробовал предложения, но все выглядело правильно. Закончилось просто преобразованием всех 4 таблиц в диапазон и затем обратно в таблицу. Не знаю, какой стол был проблемой, но теперь все хорошо. ;)

Если ваша таблица представляет собой связанную таблицу (через соединение ODBC, связанную с Access и т. Д.), Которая вызывает ошибку, вы можете изменить свойства соединения в связанной таблице на «Вставлять целые строки для новых данных, очищать неиспользуемые ячейки». Это решило проблему для меня, когда у меня было несколько последовательных связанных запросов на одном листе.

У меня та же ошибка при обновлении таблицы — ошибка «Эта операция недопустима. Операция пытается сместить ячейки в таблице на вашем рабочем листе».

Основная причина заключается в том, что обновление добавляет строки или столбцы в таблицу и обнаруживает, что для этого нет места. Могут ли строки выглядеть пустыми, но использовались ли раньше? Не уверен.

Исправление — редактирование свойств таблицы (нажмите на таблицу, щелкните вкладку «Дизайн», нажмите «Свойства») — измените выделение в нижней части «Выкл.» Из «Вставить ячейки для новых данных . » и выберите любой другой параметр, мой выбор — «Перезаписать». существующие клетки . »

Внимание — это перезапишет любую стандартную информацию в развернутых строках или столбцах. Однако — если рядом есть дополнительная смежная дополнительная таблица — она ​​будет перемещать таблицу, а не перезаписывать / удалять — спасибо инженеру с разумными взглядами из MS!

Мой результат — я преобразовал свой SS, чтобы иметь таблицу поверх таблицы (всего 10) на каждом листе — без пробелов между ними. Обновления теперь происходят без ошибок, и все строки перемещаются вокруг, чтобы вместить то, что необходимо.

На мою проблему повлияли некоторые определенные таблицы, которые у меня были в разделе Формулы> Диспетчер имен.

У меня было 2 «именованные» таблицы, одна под другой. Но я пытался вставить весь столбец, который бы повлиял на мою таблицу с именем Table2. Я переместил «Table2» на другую вкладку, просто для тестирования, затем я смог добавить столбец.

Итак, проверьте Формулы> Диспетчер имен и посмотрите, есть ли там что-нибудь определенное. Это может помочь изолировать проблему.

PS — Преобразование моей таблицы «Формат таблицы» в обычный диапазон не решило мою проблему. Возможно, потому что таблица2 ниже вновь преобразованной таблицы1 не была включена в это событие (Преобразовать в диапазон).

Да, я столкнулся с той же проблемой. Просто нажмите Cltr + End и удалите строки, в которых нет данных. И ваша проблема решится

специалист

Мнение эксперта

Витальева Анжела, консультант по работе с офисными программами

Со всеми вопросами обращайтесь ко мне!

Задать вопрос эксперту

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

Если на листе хранятся данные, которые будут нужны в дальнейшем или которые используются для вычисления на других листах, но он мешает работать или просто не нужно его отображение в списке листов, то его можно просто Скрыть. Для этого нажмите на нужном листе ПКМ — Скрыть. Лист не будет видно в окне программы, но он будет сохранен.

Как автоматически перенести данные с одного листа Excel на другой? IT-ликбез

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

Понравилась статья? Поделить с друзьями:
  • Не удается вставить как значение excel
  • Не удается восстановить файл excel если
  • Не удается восстановить документ word
  • Не удается визуализировать среду visual basic word
  • Не увеличивается шрифт в excel