В принципе данный вопрос поднимался и есть решения, но не везде они полные . Я столкнулся с некоторыми проблемами которые не могу решить сам, прошу вас уважаемые специалисты помощи.
Цель: разрешить пользователям копирование через ctrl-c ctrl-v, но чтобы вставка была только значениий. А также очень желательно разрещить вставлять только в одну ячейку, вставку во можества запретить.
Насколько я понял существует 2 буфера обмена, один принадлежит "офису" другой винде, поэтому и надо проверять оба
Наверно нет смысла в прилагаемом файле, поэтому сильно не ругайте если прилагать надо что-то обязательно )
Вот что уже было найдено в том числе и на данном ресурсе.
есть следющий код:
В книге Workbook
в модуле
Код рабочий кроме момента когда надо скопировать из другой книги книги экселя в текущую.
Из экспериментов я понял что проблема в том, что буфер очищается. Т.е. если я копирую из текстового файла или почты или данного файла и вставляю то все ОК, а если из другой книги то буфер почемуто пустой и выдается ошибка в строке[
Вопрос первый: Почему буфер возвращается пустым? и как с этим бороться )
Вопрос второй: Помогите разобраться почему не не срабатывает тогда "On Error GoTo CopAS2" ведь нескольками строками кода ранее срабатывает без проблем
Заранее благодарю! )
Цель: разрешить пользователям копирование через ctrl-c ctrl-v, но чтобы вставка была только значениий. А также очень желательно разрещить вставлять только в одну ячейку, вставку во можества запретить.
Насколько я понял существует 2 буфера обмена, один принадлежит "офису" другой винде, поэтому и надо проверять оба
Наверно нет смысла в прилагаемом файле, поэтому сильно не ругайте если прилагать надо что-то обязательно )
Вот что уже было найдено в том числе и на данном ресурсе.
есть следющий код:
В книге Workbook
Код |
---|
Private Sub Workbook_Activate() CopyOnlyValueOn End Sub Private Sub Workbook_Deactivate() CopyOnlyValueOff End Sub Private Sub CopyOnlyValueOn() With Application .OnKey "^x", "" .OnKey "^v", "PSpec" .CellDragAndDrop = False ' nelzja peretaskivat jacheiku End With End Sub Private Sub CopyOnlyValueOff() With Application .OnKey "^x" .OnKey "^v" .CellDragAndDrop = True End With End Sub |
в модуле
Код |
---|
Sub PSpec() On Error GoTo CopAS Selection.PasteSpecial Paste:=xlPasteValues Exit Sub CopAS: On Error GoTo CopAS2 ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False CopAS2: MsgBox "Error ALL" On Error GoTo 0 End Sub |
Из экспериментов я понял что проблема в том, что буфер очищается. Т.е. если я копирую из текстового файла или почты или данного файла и вставляю то все ОК, а если из другой книги то буфер почемуто пустой и выдается ошибка в строке[
Код |
---|
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False |
Вопрос первый: Почему буфер возвращается пустым? и как с этим бороться )
Вопрос второй: Помогите разобраться почему не не срабатывает тогда "On Error GoTo CopAS2" ведь нескольками строками кода ранее срабатывает без проблем
Заранее благодарю! )