Столкнулся с такой проблеммой: Нужно поместить в буфер обмена текстовые данные. И не могу разобраться, в чем проблема. Задача - поместить в буфер обмена текстовые данные с возможностью последующей их вставки в другие приложения через 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 - не получилось...
Имя файла должно помещаться в буфер обмена. Т.е. конечное значение переменной tempstr. И не важно, задаю я это значение как в примере ("Необходимое имя файла") или же переменная задается другими формулами. Т.е. задача - поместить текстовое значение переменной tempstr
значение переменной формируется в процессе работы макроса. 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