Страницы: 1 2 След.
RSS
Изменить способ вставки по умолчанию
 
Здравствуйте.

Помогите пожалуйста с настройками. В Word есть возможность настроить параметры копирования и вставки по умолчанию. В Excel такого нет, но очень нужно. В частности, чтобы по умолчанию сохранялось форматирование конечного документа. Это возможно?

Заранее спасибо.
 
Таких настроек в Excel нет, но можно реализовать кодом.
Скопируйте приведенный ниже код в модуль ЭтаКнига и в данной книге копироваться будут только значения
Код
' ZVI:2015-06-21 http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&TID=67174
' Копировать только значения.
' Код поместить в модуль ЭтаКнига

Dim IsCopyMode As Boolean

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim a
  If Not IsCopyMode Then Exit Sub
  a = Target.Value
  With Application
    .EnableEvents = False
    .Undo
    Target.Value = a
    .EnableEvents = True
  End With
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  IsCopyMode = Application.CutCopyMode = xlCopy
End Sub
Изменено: ZVI - 21.06.2015 18:04:04
 
Что я не так делаю? Все равно с форматированием вставляется :cry:
 
Спасибо за содействие, все оказалось гораздо проще))))

1. В стиле "Обычный" задать необходимый формат.
2. Выделить весь лист и применить стиль.
 
Тогда это скорее не сохранение, а сброс "форматирования конечного документа", да  и не при копировании.
Попробуйте в варианте без кода изменить формат любой ячейки и скопировать её в другую ячейку - она скопируется вместе с форматом. А с кодом форматы не копируются, например, с кодом создайте новый лист и скопируйте в него содержимое исходного листа.  Тем не менее, хорошо, что Вы нашли решение, которое устраивает :)
Изменено: ZVI - 21.06.2015 20:31:16
 
В том то и дело, что вставляется с форматом, но в умной таблице сразу перестраивается под настройки стиля). А за ее пределами, да, форматирование остается.

С кодом у меня почему то не получилось( может не так что-то сделала, но он не отработал. Я вложила файл в третье сообщение.
 
Цитата
aliador написал: форматирование остается
Чтобы понять проблему не помешало бы описание действий с примером: что и куда копировалось, что получилось и что ожидалось. Попробуй в Вашем файле сообщения #3 сделать так, как предлагалось: "создайте новый лист и скопируйте в него содержимое исходного листа". Форматы не скопируются, только значения. Или, например, сделайте заливку любой ячейки цветным фоном и скопируйте ее в другую ячейку - фон не скопируется, а формат этой другой ячейки, останется таким, каким был раньше,
Изменено: ZVI - 21.06.2015 21:21:15
 
Цитата
ZVI написал: Чтобы понять проблему не помешало бы описание действий с примером: что и куда копировалось, что получилось и что ожидалось.
Источником текста являются статьи с сайтов, форумов, книг/учебников (pdf, djvu, doc, docx). Разумеется форматы там абсолютно разные. Настолько, что в глазах рябит.
Выборочный текст (например код в плане формата очень показателен) копируется в таблицу excel для дальнейшей обработки.
Цель: независимо от формата исходного фрагмента вставленный текст должен принимать форматирование конечной ячейки.
Шрифт Times New Roman, 8, Авто, по левому/верхнему краю, перенос по словам.
Цитата
"с кодом создайте новый лист и скопируйте в него содержимое исходного листа". Форматы не скопируются, только значения.
Абсолютно верно если источник excel,
но если скопировать текст с сайта, то он вставляется с форматом. Во всей красе.
 
Цитата
aliador написал:
но если скопировать текст с сайта, то он вставляется с форматом.
Может быть следовало СРАЗУ сказать, что копирование/вставка не в пределах Excel?
 
я как-то не подумала, что разница так принципиальна :oops:
 
Самый простой способ вставлять только текст из скопированного фрагмента сайта - использовать Opera
 
:D точно
 
Цитата
Aliona.Tom написала: Источником текста являются статьи с сайтов, форумов, книг/учебников (pdf, djvu, doc, docx). ... Цель: независимо от формата исходного фрагмента вставленный текст должен принимать форматирование конечной ячейки.  Шрифт Times New Roman, 8, Авто, по левому/верхнему краю, перенос по словам
Для этого в книгу в модуль ЭтаКнига поместите такой код:
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  With Target
    .NumberFormat = "General"
    .HorizontalAlignment = xlLeft
    .VerticalAlignment = xlCenter
    .WrapText = True
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    With .Font
      .Name = "Times New Roman"
      .FontStyle = "обычный"
      .Size = 8
      .Strikethrough = False
      .Superscript = False
      .Subscript = False
      .OutlineFont = False
      .Shadow = False
      .Underline = xlUnderlineStyleNone
      .ColorIndex = xlAutomatic
      .TintAndShade = 0
      .ThemeFont = xlThemeFontNone
    End With
  End With
End Sub

Подправьте в коде параметры, если нужно
Изменено: ZVI - 21.06.2015 23:15:18
 
Спасибо! Все получилось. :)
 
ZVI, спасибо Вам большое! Очень нужная вещь - вставка только значений.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Здравствуйте. Очень удобный модуль. Скажите пожалуйста. Вставляю все как надо в "Эта книга", но у меня отдельно на листах есть еще всякие макросы. Например есть на листе макрос - автоматической вставки дат. Вот когда я вставляю ваш модуль, и пытаюсь на ту страницу что нить вставить выскакивает ошибка и выделяется строчка ".Undo" желтым цветом... и перестают работать оба макроса... И если я копирую с другой страницы на которой есть условное форматирование, то он копирует значения с условным форматированием... Можно сделать чтоб условное форматирование тоже не переносил?
 
Цитата
Александр К написал: и выделяется строчка ".Undo" желтым цветом...
Как бы...в макросе от ZVI, такой строчки нет. Что-бы разрулить конфликт макросов нужно, как минимум, видеть их. Все. В Вашем файле.
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
Как бы...в макросе от  ZVI , такой строчки нет. Что-бы разрулить конфликт макросов нужно, как минимум, видеть их. Все. В Вашем файле.
Макрос который от ZVI от 21 июня... 13 строчка - .Undo
Вот макрос который стоит на листе, больше на этой странице макросов нет... Есть на других... Но мне на других не важно так как вставка по умолчанию значений интересует только на этом листе... Кстати можно переделать этот макрос конкретно для одного листа? Я имею ввиду чтоб не во всей книге вставлялись значения,  а только на одном листе. А то получится и на других листах ошибки...

Private Sub Worksheet_Change(ByVal Target As Range)
   
Код
    For Each cell In Target
       If Not Intersect(cell, Range("B3:AE3")) Is Nothing Then
            With cell.Offset(0, 20)
               .Value = Date
            End With
       End If
    Next cell
End Sub
Изменено: Александр К - 16.10.2016 11:31:19
 
Александр К, код следует оформлять соответствующим тегом. Исправьте свой пост.
Спасибо!
 
Цитата
Александр К написал: переделать этот макрос конкретно для одного листа
Код
Dim IsCopyMode As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  IsCopyMode = Application.CutCopyMode = xlCopy
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim a
If Not IsCopyMode Then Exit Sub
For Each cell In Target
    If Not Intersect(cell, Range("B3:AE3")) Is Nothing Then
        a = cell.Value
        With Application
            .EnableEvents = False
            .Undo
            cell.Offset(0, 20).Value = Date
            cell.Value = a
            .EnableEvents = True
        End With
    End If
Next cell
End Sub
Из модуля ЭтаКнига удалить макрос от ZVI,  В модуль нужного листа вствить вышеприведенный код. Вместо Вашего
Согласие есть продукт при полном непротивлении сторон
 
Спасибо сейчас попробую...

Цитата
Юрий М написал:  код следует оформлять соответствующим тегом.
Сделано)
Изменено: Александр К - 16.10.2016 15:49:35
 
Цитата
Александр К написал: Спасибо сейчас попробую.
Не спешите, немного не допилил. Работает если копировать по одной ячейке
Согласие есть продукт при полном непротивлении сторон
 
хм. понял не спешу. Да, нужно вставлять несколько ячеек сразу
я тоже свой макрос немного подправил...Пароль добавил изменил Range и with cell.Offset
сделайте пожалуйста для него
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     
    For Each cell In Target
       If Not Intersect(cell, Range("K:K")) Is Nothing Then
            With cell.Offset(0, 16)
            ActiveSheet.Unprotect Password:="1708159357"
               .Value = Date
            End With
            ActiveSheet.Protect Password:="1708159357"
       End If
    Next cell
End Sub
 
Цитата
Александр К написал: свой макрос немного подправил
Расскажите словами, что нужно по результатам совместной работы обеих макросов?
Скопировали откуда-то диапазон, и....Дальше Ваши действия?  
Согласие есть продукт при полном непротивлении сторон
 
Я не знаю как это пересказать словами) попробую:
В том листе с которого копирую строчный диапазон - формулы
И так как при вставке в другой лист срабатывает макрос на вставку дат, то параметры вставки - недоступны и выбрать "вставить только значения" не могу...
Если вставляю значения то по отдельным проверочным формулам все норм...
А если вставляю просто (с макросом на вставку дат), то вставляются формулы и соответственно все проверочные формулы кажут ошибку...

То есть у работников, нет никаких дальнейших действий...Они из одного листа вставляют в другой и все - на этом их дело закончено, дальше все делают проверочные формулы:  проверяют чтобы данные не вставлялись задним числом, проверяют правильно ли взята сумма с клиента на дату совершения операции и тд...Там вообще все замутано и запутано так....
Изменено: Александр К - 16.10.2016 12:31:07
 
Замените все макросы в модуле нужного листа на этот код. Вставляет только значения только в столбец K.
Скрытый текст
Изменено: Sanja - 16.10.2016 15:50:07
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал: Вставляет только значения только в столбец K.
Эт не есть правильно...
у меня на столбец K стоит макрос на вставку дат, но это мне можно было сделать на любой столбец от А до R. (при вставке с другого листа все ячейки от A до R заполняются...)
На другом листе формулы - в столбцах E,F,J,L.
При всем при этом получается циклическая формула (если вставляются не значения)
Вставил ваш макрос. Так же и осталось - циклическая формула, а в столбце К ничего не вставилось, только изменился цвет ячейки на "нет заливки"
 
Файл-пример никак не соорудить? А то у нас разговор слепого с глухим
Согласие есть продукт при полном непротивлении сторон
 
Книга - 777
от макросов и от листов - 1708159357
Изменено: Александр К - 16.10.2016 13:25:29
 
У меня появилась другая идея) Причем нужная...И тогда можно будет забить на эту вставку только значений потому как останутся только значения....
На странице "Отсюда" в столбик  E и F вставляется - сами видите что.
Цепляется это за дату, которая вставляется автоматически при вводе чего либо в столбец Q + 30 дней к ней...
Можно сделать чтобы в E и F вставлялись значения?  
Страницы: 1 2 След.
Читают тему
Наверх