Страницы: 1 2 След.
RSS
При вставке из буфера (MyData.PutInClipboard) появляется абракадабра.
 
Здравствуйте, гуру и другие форумчане.
Проблема состоит в следующем. Купил новый бук. Установил Офис 2007. Перенес все свои файлы.
Использую при двойном нажатии левой кнопки мыши копирование содержимого ячейки.
Так вот при вставке значения, вставляются два непонятных квадратика. Хотя MsgBox выдает правильное значение. На старом компе вставляет правильно, а на новом не хочет.
Код
    Dim MyData As DataObject
    eee = Left(Target.Address(0, 0), 1)
    If eee = "I" Or eee = "K" Then
        rrr = Target.Value
        Set MyData = New DataObject
        MyData.SetText rrr
        MyData.PutInClipboard
        MsgBox rrr & " Скопировано в буфер"
        Cancel = True
    End If

Нутром чувствую, что ошибка где-то рядом, но понять не могу. Может, какая-нибудь библиотека не подключена?
 
Насчёт библиотеки, и альтернативного кода (без подключения библиотек),
можно почитать здесь:
http://excelvba.ru/code/clipboard

PS: У меня ваш макрос работает нормально
Попробуйте на других ячейках
Квадратики - это, скорее всего, символ перевода строки —  vbNewLine
Изменено: EducatedFool - 10.02.2013 13:45:59
 
Цитата
EducatedFool пишет:
PS: У меня ваш макрос работает нормально
Добрый день, Игорь.
Я проверил. Библиотеки на обоих компьютерах установлены одинаковые. Т.е. дело получается не в библиотеках.
А перевода строки там просто нет. Это же даже видно в MsgBox rrr & " Скопировано в буфер" .
Я сам удивлён, почему так происходит. На обоих компах Офис 2007. Остальные макросы работают нормально. А вот имеет ли значение то, что на старом компе Видноуз 7, а на новом Виндоуз 8?
А что имелось ввиду "Попробуйте на других ячейках "? Я пробовал вставлять и в Ворд, и в Эксель и в текстовый файл, и в Браузеры (в поля, куда обычно вставлял). Результат - один и тот же.
 
Может это снова проделки Скайпа?
 
Не понял. Можете пояснить?
 
Не понял. Можете пояснить?

Кстати, я попробовал вставить в код вот это:
Код
Function ClipboardText() ' чтение из буфера обмена
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        ClipboardText = .GetText
    End With
End Function

Так вот значение ClipboardText получилось два вопроса.
И MsgBox ClipboardText тоже выдало значение два вопроса.

Прикрепляю файл. Я взял свой файл, с которым это происходит, и удалил всё лишнее. Всё равно значение из буфера равно 2 вопроса. ClipboardText = "??"
 
Юрий имел ввиду плагин браузера Scype click to call. Он мешает работе с буфером. А у меня Ваш код тоже работает ;)
Я сам - дурнее всякого примера! ...
 
Плагина Scype click to call у меня нет. Я проверил во всех браузерах.
Что же это может быть тогда? У кого какие варианты?
 
Может быть любая программа, перехватывающая буфер обмена.
Я сам - дурнее всякого примера! ...
 
Цитата
Евгений Мультипликатор пишет:
Плагина Scype click to call у меня нет. Я проверил во всех браузерах.
Проверьте его наличие ещё в "Панели управления" - у меня в браузерах его не было, а в списке программ обнаружился.
 
Цитата
KuklP пишет:
Может быть любая программа, перехватывающая буфер обмена.
Например, какая?
 
Нет, и в Панели управления/Программы и компоненты плагин не обнаружен. Только сам Скайп.
 
Цитата
Евгений Мультипликатор пишет: Например, какая?
За вас искать?!. Пунто свитчер... Ниндзя... Транслитераторы... Переводчики... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Прошу у всех прощения за потраченное время.
Я не знаю, что произошло, но по прошествии двух дней всё работает нормально.
Думаю, что эту тему можно удалить целиком.
 
Зачем удалять? Другим пригодится.
Я сам - дурнее всякого примера! ...
 
Как бы получается, что проблема до конца не выяснена, и, соответственно, решения никакого по ней нет.
Поэтому и подумал, чтобы не болталась зря эта тема, лучше удалить.
В любом случае всем спасибо.
 
"Как бы получается, что проблема" обсуждалась уже не раз на форуме, но поиском Вы не воспользовались ;) И "Как бы получается, что" Вы не очень опытный пользователь(без обид, мы все были чайниками), раз уж задаете вопрос #11. Ушла проблема сама собой и Вы довольны. Но - "Я не знаю, что произошло, но по прошествии двух дней всё работает нормально. ". А завтра проявится снова... Вам ответили, почему такое может быть. А уж искать какая программа перехватывает буфер - нам же неведомо, что у Вас на компе установлено.
Удачи!
Я сам - дурнее всякого примера! ...
 
Спасибо за разъяснения. Поиском я пользуюсь всегда прежде, чем задать вопрос. Это проще и быстрее, чем спрашивать и ждать. И задаю вопрос уже после. Если именно эта проблема обсуждалась не раз, значит я не правильно задавал критерий поиска. Конечно, я не очень опытный пользователь, раз не понимаю, что значит "перехватывать буфер".
В любом случае, этот форум - самый лучший. Не раз это говорил и думаю, что буду повторять впредь. Ведь это - правда.
Еще раз спасибо всем.
 
Цитата
KuklP пишет:
А завтра проявится снова
Как же вы были правы. Проблема появилась снова. Теперь я вообще поник!
 
Попробуйте запустить Диспетчер задач и по одному отключайте все несистемные процессы. Кроме Экса, разумеется. Так Вы сможете определить, какая из программ мешает работе макроса.
Я сам - дурнее всякого примера! ...
 
KuklP, спасибо, что откликнулись.
Вроде нашел в чем проблема. Но не нашел пока решения.Объясню подробно.
Открываю три файла Экселя. Во всех трех файлах используется макрос на копирование в буфер по двойному нажатию мыши на ячейку, т.е. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean).
Когда все три файла открыты, происходит эта арбакадабра во всех трех файлах.
Когда закрываю файл, который исходный, абракадабры не происходит. Значит, думаю, дело в исходном файле.
Если открыты только два файла, кроме исходного, абракадабры нет. Как только открываю исходный файл - абракадабра во всех трех файлах. Выходит, что что-то происходит именно при открытии исходного файла.
В моем исходном файле, при открытии книги стоит макрос на создание контекстного меню.
Так вот, если закомментировать вызов функции создания контекстного меню, сохранить и открыть файл снова - абракадабры нет. Значит, дело именно в коде при создании контекстного меню!!!
Еще интересный момент. Если открыть исходный файл с закоментированным созданием контекстного меню (абракадабры нет) и снять комментарий с Call СозданиеКонтМеню, абракадабра появляется снова.
Пока не знаю в чем причина, буду копать код создания меню.
 
Подобрался, кажись, еще ближе. Если открывать исходный файл, то сначала работает буфер, а только стоит зайти в редактор ВБА, просто зайти, даже ничего не изменяя - глюк появляется и не уходит.
Что-то я начинаю путаться. Но похоже, что сторонние программы здесь не при чём.
 
Здравствуйте гуру и другие форумчане!
Прошу прощения за возобновление темы, но я нашел 100% почему так происходит!!!
А происходит это только в том случае, когда открыто хоть одно окно Проводника, любое.
Как только закрываешь окна, даже не закрывая Экселя, вставка идет нормально.
Ну и теперь вопрос: что же такого может быть в проводнике, перехватывающее буфер обмена?
 
Цитата
Ну и теперь вопрос: что же такого может быть в проводнике, перехватывающее буфер обмена?
Добрый день!

Никто так и не нашел решения по данной проблеме?

У меня ситуация похожая.. есть макрос который записывает содержимое в буфер обмена(БО). и наблюдаются следующие ситуации:
1. Если закрыт "Проводник" то все работает корректно, что макросом записывается в  БО, то потом можно вставить в любое текстовое поле.
2. Если открыт "Проводник" и в этом окне не заходить в  папки то все также работает нормально.
3. Если открыт "Проводник" и в этом окне зайти в любую папку, то все что макросом было записано в БО, в любое текстовое поле/программу вставляет 2 квадрата "￿￿". Причем если в проводнике из этой папки я вернусь назад, с помощью стрелки, и при повторном запуске макроса, то результат будет какой и должен быть.

Чем и как в "Проводнике" нарушается работа буфера обмена? можно ли это как-то избежать(без возврата в проводнике на главную вкладку и без закрытия самого проводника)?

ОС - Win 10
Изменено: WS27 - 16.05.2019 12:29:01
 
Добрый день.
У меня с тех пор поменялась ситуация - был установлен Офис 365 и Офис 2007 остался.
Проблема не ушла - она полностью осталась, но появляется только в 365. Поэтому если есть необходимость пользоваться макросом с буфером, я открываю книгу в Офисе 2007. А у Офис 2007 эта проблема пропала.
Причем, за это время только на одном компе, на которых я использовал макросы с буфером, была такая же проблема с буфером в Офисе 16.
Так что проблема не ушла, но уже не беспокоит так, как раньше.
 
Загадочный квадратик ￿  -  <Not a Character> (номер в Юникоде U+FFFF). В VBA от него избавиться не сложно:
Код
Replace(txt, ChrW(65535), "")
Формулы Excel поймут этот символ, заключенный в двойные кавычки.
Владимир
 
У меня сейчас стоит  2010 офис, проблема есть и жутко надоедает :cry:

sokol92,  дело в том что весь тот текст который был изначально(в БО) превращается в эти 2 квадратика, а не дополнительно появляются 2 квадрата...
 
Боюсь, без примера не обойтись (у нас подобные ситуации не наблюдались). Приложите файл и опишите точную последовательность действий, приводящую к аварийной ситуации. Не забудьте указать операционную систему, версию и разрядность Excel.
Владимир
 
Цитата
KuklP написал:
Может быть любая программа, перехватывающая буфер обмена.
Цитата
Z написал:
За вас искать?!. Пунто свитчер... Ниндзя... Транслитераторы... Переводчики...
Отличная идея(-и)! Натолкнула(-и) на правильное решение.

Проблема была такая: в Excel 365 (Win10) при вставке содержимого буфера обмена из контекстного меню ПКМ постоянно появлялось сообщение: "Возникла проблема с буфером обмена, но Вы по-прежнему можете вставить содержимое в эту книгу"
Мышь прекращала реагировать на команды, содержимое буфера обмена терялось.

Причина была в Punto Switcher.
На сайте авторов PS в справке присутствует следующий совет: PS не работает в программе, запущенной с правами администратора (в Windows 8 и 10).
Запускайте Punto Switcher, включив опцию Запускать с правами администратора (в меню Настройки → Общие).

С данными настройками всё работает.
Большое спасибо.
 
Добрый день!

Аналогичная ошибка с буфером, причина в том, что если проводник открыт, появляется ошибка при вставке из буфера два квадрата.
Когда закрыт проводник - все ок работает.
Код
Sub Column_to_String()
Dim rr As Range
Set rr = Selection
Call My_InClip(InLine(rr))
End Sub

Function My_InClip(str_inClip As String)
Dim d As New DataObject
d.SetText (str_inClip)
d.PutInClipboard
End Function

В чем беда?
Винвдовс 10 64, Ексель 2019  
Страницы: 1 2 След.
Наверх