Страницы: 1
RSS
Буфер обмена в Excel 2013, Windows 8, Не работает .PutInClipboard
 
Здравствуйте.

Столкнулся с такой проблеммой:
Нужно поместить в буфер обмена текстовые данные.
И не могу разобраться, в чем проблема.
Задача - поместить в буфер обмена текстовые данные с возможностью последующей их вставки в другие приложения через Ctrl+V

Вариант 1:
Код
Dim FnameVed As New DataObject 
tempstr = "Необходимое имя файла"
FnameVed.SetText Format(tempstr)
FnameVed.PutInClipboard
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, ActivePrinter:=MainForm.ComboBox1.Value, Copies:=1, Collate:=True, IgnorePrintAreas:=False

Результат - Если  принтер Adobe PDF - открывается дмалоговое окно сохранение файла и в строке имени файла нажимаю Ctrl+V - всталяется "Необходимое имя файла", и в буфере тоже остается "Необходимое имя файла", т.е. значение tempstr
Вариант 1:
Код
Dim FnameVed As New DataObject 
tempstr = "Необходимое имя файла"
FnameVed.SetText Format(tempstr)
FnameVed.PutInClipboard

Результат - в буфере два "квадратика". И эти же два квадратика остаются в буфере в Варианте 1, если принтер отличен от Adobe PDF
Как писал в теме:
Система - Windows 8, 64 бит
Офис - Excel 2013
В VBA VBAProject Microsoft Forms 2.0 Object Library подключено
Пробовал разобраться с Declare Function SetClipboardData - не получилось...

Заранее спасибо
Изменено: aleontjev - 04.03.2015 00:58:28
 
aleontjev, код следует оформлять соответствующим тегом. Исправляйте.
 
Откуда берется имя файла? Всегда записывается внутри кода?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Имя файла должно помещаться в буфер обмена. Т.е. конечное значение переменной tempstr. И не важно, задаю я это значение как в примере ("Необходимое имя файла") или же переменная задается другими формулами. Т.е. задача - поместить текстовое значение переменной tempstr
 
Цитата
aleontjev написал: И не важно
Вам не важно, а буферу важно. Если копируется ячейка целиком - то в буфер помимо значения ячейки попадут и символы перевода строки.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
значение переменной формируется в процессе работы макроса.
Ctrl+C не используется.
Я пытаюсь разобраться, почему при варианте отправки страницы на печать на принтр Adobe PDF в буфере остается все, что нужно, а если обычный принтр - в буфере остается непонятная ерунда.
В буфере остается всякая ерунда даже в том случае, если выполнить такое:
Код
Public Sub ClearClipboard()
    Dim MyDataObj As New DataObject
    MyDataObj.SetText ""
    MyDataObj.PutInClipboard
End Sub

казалось бы в буфере должно быть пустое значение. Но в буфере остается непонятно что.
Помогла + 1 строка:
Код
Public Sub ClearClipboard()
    Dim MyDataObj As New DataObject
    MyDataObj.SetText ""
    MyDataObj.PutInClipboard
    MyDataObj.Clear
End Sub
Изменено: aleontjev - 05.03.2015 11:20:30
 
aleontjev, не жмите кнопку цитирования просто так!
Страницы: 1
Наверх