Приветствую. При вставке из буфера по умолчанию используется форматирование исходного фрагмента, форматирование конечного фрагмента предлагается опционально. Можно ли сделать, и как, чтобы по умолчанию использовалось форматирование конечного фрагмента, а исходного - опционально? Excel 07-10.
Приветствую. При вставке из буфера по умолчанию используется форматирование исходного фрагмента, форматирование конечного фрагмента предлагается опционально. Можно ли сделать, и как, чтобы по умолчанию использовалось форматирование конечного фрагмента, а исходного - опционально? Excel 07-10.RAN
Андрей, не думаю, что это хорошая идея. Ведь вставлять ты можешь не только диапазоны, но и картинки, диаграммы, элементы управления, да и ещё дофига всего. Лучше уж для копирования-вставки ЗНАЧЕНИЙ использовать специальный макрос, подвешенный на хоткеи Я, например, уже очень много лет и в Word'e и в Excel'e использую для вставки значения макрос, подвешенный на хоткей Ctrl+Q. Для нашего сабжа - Excel'я это у меня написано так: [vba]
Code
Private Sub SPPASTE_VAL() ' "Специальная вставка: ВСТАВИТЬ ТОЛЬКО ТЕКСТ" ' Сочетания клавиш ^q, ^Q, ^й, ^Й для вызова этой процедуры назначаются при событии Workbook_Open On Error Resume Next Selection.PasteSpecial Paste:=xlValues 'Application.CommandBars.FindControl(ID:=370).Execute ' то же самое, но через Control ID - номер стандартной команды End Sub
[/vba]
Андрей, не думаю, что это хорошая идея. Ведь вставлять ты можешь не только диапазоны, но и картинки, диаграммы, элементы управления, да и ещё дофига всего. Лучше уж для копирования-вставки ЗНАЧЕНИЙ использовать специальный макрос, подвешенный на хоткеи Я, например, уже очень много лет и в Word'e и в Excel'e использую для вставки значения макрос, подвешенный на хоткей Ctrl+Q. Для нашего сабжа - Excel'я это у меня написано так: [vba]
Code
Private Sub SPPASTE_VAL() ' "Специальная вставка: ВСТАВИТЬ ТОЛЬКО ТЕКСТ" ' Сочетания клавиш ^q, ^Q, ^й, ^Й для вызова этой процедуры назначаются при событии Workbook_Open On Error Resume Next Selection.PasteSpecial Paste:=xlValues 'Application.CommandBars.FindControl(ID:=370).Execute ' то же самое, но через Control ID - номер стандартной команды End Sub
Леш, для меня это хорошая идея. Все дело в том, что у меня есть готовый шаблон, куда нужно вставлять данные. Данные получаются из различных программ, поэтому даже на лист Excel встают по разному. В процессе обработки я их вставляю на Лист1, обрабатываю (в т.ч. и макросами), а затем копирую в шаблон. Поскольку в одном случае данные попадают в столбец В, а в другом - С, в третьем - Е, установить форматы изначально невозможно (за исключением столбца А). Копировать макросом всю эту кучу будет не проще, чем вручную. Сейчас собираю все с листа в буфер, затем переключаю лист и вставляю, но для каждой вставки приходится менять параметры. Чтобы вставлять только текст, нужно для каждой вставки переключать лист. Дополнительная кнопка или хоткей - попробовать можно, но думаю - не вариант.
Леш, для меня это хорошая идея. Все дело в том, что у меня есть готовый шаблон, куда нужно вставлять данные. Данные получаются из различных программ, поэтому даже на лист Excel встают по разному. В процессе обработки я их вставляю на Лист1, обрабатываю (в т.ч. и макросами), а затем копирую в шаблон. Поскольку в одном случае данные попадают в столбец В, а в другом - С, в третьем - Е, установить форматы изначально невозможно (за исключением столбца А). Копировать макросом всю эту кучу будет не проще, чем вручную. Сейчас собираю все с листа в буфер, затем переключаю лист и вставляю, но для каждой вставки приходится менять параметры. Чтобы вставлять только текст, нужно для каждой вставки переключать лист. Дополнительная кнопка или хоткей - попробовать можно, но думаю - не вариант.RAN
Не, Серёга, метод по твоей ссылке который не отвечает ТЗ, полученному от Андрея Ведь он просил замену стандартного. Правда, не уточнил, каким образом вызван стандартный: по Ctrl+V или по кнопочке на панели.
Есть ещё один гарный способ помочь Андрюхе, но только если он использует Punto Switcher (а сейчас очень многие его юзают и я в числе его больших любителей) Достаточно в настройках Punto Switcher включить опцию "Общие"-"Дополнительные"-"Следить за буфером обмена" и по Ctrl+Shift+V будет выводиться список ранее скопированных значений. Так оттуда вставка идёт БЕЗ ФОРМАТА
А вообще Punto Switcher мне очень помогает в писанине: мало того, что переключает клавиатуру, так ещё это волшебное Ctrl+Shift+V с возможностью выбора из множества ранее скопированных, и ведение дневника (запись вводимого с клавы), а уж преобразование аббревиатур - это вообще супер для программирования! У меня, например, там с десяток разных сокращений. Начиная от простейшей замены двойного дефиса на длинный (правда, при вводе формул это иногда мешает) и трех точек на многоточие и до, к примеру, замены в коде при вводе app-false на With Application: .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False: .Calculation = xlManual: End With
Quote (Serge_007)
Лёш, можно и без макроса
Не, Серёга, метод по твоей ссылке который не отвечает ТЗ, полученному от Андрея Ведь он просил замену стандартного. Правда, не уточнил, каким образом вызван стандартный: по Ctrl+V или по кнопочке на панели.
Есть ещё один гарный способ помочь Андрюхе, но только если он использует Punto Switcher (а сейчас очень многие его юзают и я в числе его больших любителей) Достаточно в настройках Punto Switcher включить опцию "Общие"-"Дополнительные"-"Следить за буфером обмена" и по Ctrl+Shift+V будет выводиться список ранее скопированных значений. Так оттуда вставка идёт БЕЗ ФОРМАТА
А вообще Punto Switcher мне очень помогает в писанине: мало того, что переключает клавиатуру, так ещё это волшебное Ctrl+Shift+V с возможностью выбора из множества ранее скопированных, и ведение дневника (запись вводимого с клавы), а уж преобразование аббревиатур - это вообще супер для программирования! У меня, например, там с десяток разных сокращений. Начиная от простейшей замены двойного дефиса на длинный (правда, при вводе формул это иногда мешает) и трех точек на многоточие и до, к примеру, замены в коде при вводе app-false на With Application: .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False: .Calculation = xlManual: End WithAlex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Понедельник, 26.11.2012, 15:06
Попробуй. Привыкнешь. Не пожалеешь. Там столько всяких полезных фич! Только когда будешь ставить выбирай "Выборочно" и отказывайся от Яндекс-бара и прочей лабуды.
Попробуй. Привыкнешь. Не пожалеешь. Там столько всяких полезных фич! Только когда будешь ставить выбирай "Выборочно" и отказывайся от Яндекс-бара и прочей лабуды.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Понедельник, 26.11.2012, 17:25
Точно говорят: "У каждого психа своя программа" [offtop]Я вот давно и конкретно подсел на Лису, но не просто, а обязательно с Google Toolbar. Лисоведы уже с версии 7, кажется, перестали поддерживать, а Google развивать Toolbar. Но были способы заставить их подружиться. А вот начиная с 13-й версии Лиса перестала поддерживать Google Toolbar совсем! Уж я и так, и так бился, в сети решение искал - НЕТ! Пришлось откатиться на версию 12. С тех пор на ней и сижу, хотя на днях вышла уже, кажется, 17-я.[/offtop]
Точно говорят: "У каждого психа своя программа" [offtop]Я вот давно и конкретно подсел на Лису, но не просто, а обязательно с Google Toolbar. Лисоведы уже с версии 7, кажется, перестали поддерживать, а Google развивать Toolbar. Но были способы заставить их подружиться. А вот начиная с 13-й версии Лиса перестала поддерживать Google Toolbar совсем! Уж я и так, и так бился, в сети решение искал - НЕТ! Пришлось откатиться на версию 12. С тех пор на ней и сижу, хотя на днях вышла уже, кажется, 17-я.[/offtop]
Достаточно в настройках Punto Switcher включить опцию "Общие"-"Дополнительные"-"Следить за буфером обмена" и по Ctrl+Shift+V будет выводиться список ранее скопированных значений. Так оттуда вставка идёт БЕЗ ФОРМАТА
это почему-то не работает у меня. Копирую из Хрома. PuntoSwitcher Версия 3.1.1 Сборка 72 Похоже надо было добавить горячие клавиши для показа буфера обмена
Цитата (Alex_ST)
Достаточно в настройках Punto Switcher включить опцию "Общие"-"Дополнительные"-"Следить за буфером обмена" и по Ctrl+Shift+V будет выводиться список ранее скопированных значений. Так оттуда вставка идёт БЕЗ ФОРМАТА
это почему-то не работает у меня. Копирую из Хрома. PuntoSwitcher Версия 3.1.1 Сборка 72 Похоже надо было добавить горячие клавиши для показа буфера обмена borus
желаю вам счастья
Сообщение отредактировал borus - Четверг, 21.02.2013, 10:40
Sub SPPASTE_PLUS() ' "Специальная вставка" On Error Resume Next Selection.PasteSpecial Paste:=xlValues If Err Then Err.Clear: ActiveSheet.PasteSpecial Paste:=xlValues If Err Then Err.Clear: ActiveSheet.PasteSpecial Format:="Текст", Link:=False, DisplayAsIcon:=False If Err Then MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description End Sub
[/vba] Я немного потестировал "в разных позах". Похоже, все хотелки исполняет. Даже на картинках не спотыкается и на разных размерах выделенного и скопированного диапазонов.
А попробуйте-ка вот такой хитрый вариант:[vba]
Код
Sub SPPASTE_PLUS() ' "Специальная вставка" On Error Resume Next Selection.PasteSpecial Paste:=xlValues If Err Then Err.Clear: ActiveSheet.PasteSpecial Paste:=xlValues If Err Then Err.Clear: ActiveSheet.PasteSpecial Format:="Текст", Link:=False, DisplayAsIcon:=False If Err Then MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description End Sub
[/vba] Я немного потестировал "в разных позах". Похоже, все хотелки исполняет. Даже на картинках не спотыкается и на разных размерах выделенного и скопированного диапазонов.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 21.02.2013, 11:36
On Error Resume Next Selection.PasteSpecial Paste:=xlValues If Err Then Err.Clear: ActiveSheet.PasteSpecial Paste:=xlValues If Err Then Err.Clear: ActiveSheet.PasteSpecial Format:="Текст", Link:=False, DisplayAsIcon:=False If Err Then MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description & vbCrLf
На строке If Err Then MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description & vbCrLf спотыкается Разобрался. Когда копировал с форума в тело макроса, русские буквы заменялись на ?????. а это оказалось критично Благодарю
Цитата (Alex_ST)
On Error Resume Next Selection.PasteSpecial Paste:=xlValues If Err Then Err.Clear: ActiveSheet.PasteSpecial Paste:=xlValues If Err Then Err.Clear: ActiveSheet.PasteSpecial Format:="Текст", Link:=False, DisplayAsIcon:=False If Err Then MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description & vbCrLf
На строке If Err Then MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description & vbCrLf спотыкается Разобрался. Когда копировал с форума в тело макроса, русские буквы заменялись на ?????. а это оказалось критично Благодарюborus
желаю вам счастья
Сообщение отредактировал borus - Четверг, 21.02.2013, 11:33
borus, эта строка для того и введена ВРЕМЕННО, чтобы можно было понять, на чём спотыкается. Если Вы не сообщите, что и откуда было в буфер обмена скопировано перед пробой макроса и какое сообщение выводится при ошибке, то исправить ничего не удастся.
P.S. Я там в MsgBox лишний & vbCrLf в конце не убрал когда копировал... Подправил код в предыдущем посте.
borus, эта строка для того и введена ВРЕМЕННО, чтобы можно было понять, на чём спотыкается. Если Вы не сообщите, что и откуда было в буфер обмена скопировано перед пробой макроса и какое сообщение выводится при ошибке, то исправить ничего не удастся.
P.S. Я там в MsgBox лишний & vbCrLf в конце не убрал когда копировал... Подправил код в предыдущем посте.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 21.02.2013, 11:40
эта строка для того и введена ВРЕМЕННО для того, чтобы понять, на чём спотыкается. Если Вы не сообщите, что и откуда было в буфер обмена скопировано перед пробой макроса и какое сообщение выводится при ошибке, то исправить ничего не удастся.
а как можно сделать так, чтобы макрос вызывался как по CTRL+q, так и по CTRL+й? Не удобно, что макрос запускается только в английской раскладке. CRL+1 не работает
Цитата (Alex_ST)
эта строка для того и введена ВРЕМЕННО для того, чтобы понять, на чём спотыкается. Если Вы не сообщите, что и откуда было в буфер обмена скопировано перед пробой макроса и какое сообщение выводится при ошибке, то исправить ничего не удастся.
а как можно сделать так, чтобы макрос вызывался как по CTRL+q, так и по CTRL+й? Не удобно, что макрос запускается только в английской раскладке. CRL+1 не работаетborus
желаю вам счастья
Сообщение отредактировал borus - Четверг, 21.02.2013, 11:42